我已经使用.htaccess
完成了从www.abc.com
到www.def.com
的重定向。使用htaccess重定向后无法检索PHP会话
重定向是成功的,但我有一个问题,即Cookie和会话只能访问使用def.com
访问网站时访问。 从abc.com进行检查时,会话将会丢失。
如何复制或阅读def.com
的会话?
请帮帮我。
我已经使用.htaccess
完成了从www.abc.com
到www.def.com
的重定向。使用htaccess重定向后无法检索PHP会话
重定向是成功的,但我有一个问题,即Cookie和会话只能访问使用def.com
访问网站时访问。 从abc.com进行检查时,会话将会丢失。
如何复制或阅读def.com
的会话?
请帮帮我。
好吧,你不能简单地做到这一点。也许看到this post?
包含会话ID(因此,您的整个会话)的cookie只在创建它的域上有效。因此,当您更改域名时,Cookie不再可用。要解决此问题,您可以将会话ID发送到新域(这不是很安全,但您可能不在乎),然后为该域创建新的cookie和会话。
这被称为“跨站点脚本”(XSS),很多人都非常努力地工作,以确保你想要的是不可能的。如果您确实找到了解决办法,请务必告诉我们,因为那将是一次重大的安全漏洞。
-1这不叫做跨站脚本。 – Gumbo 2011-01-25 09:55:16
当您可以从两台服务器访问会话数据存储时,只能在两个域上共享相同的会话。根据session data storage type and location,您可能需要编写您的own session storage handler。
除此之外,还需要确保两个域都使用相同的会话ID。如果您想使用Cookie作为会话ID,则只能在域名共享公用超级域名时使用,因此它们是域名的子域名,例如foo.example.com和bar.example。 com分享超级域名example.com。在这种情况下,您需要adjust the session cookie parameterdomain并将其设置为值为.example.com
超级域example.com。
否则,就像您的示例中,域名仅作为顶级超级域名共享com,您不能使用cookie(首先)。但是,您可以使用URL将会话ID从一个域传输到另一个域。要做到这一点,您需要启用session.use_trans_sid并禁用session.use_only_cookies(至少在重定向目标域上),并将会话ID附加到从一个域指向另一个域的每个URL(这里您可以使用SID
常量)。
这很难 - 如果你能解释为什么你做了这个重新定向,为什么你需要访问会话数据,我们或许能找到一个替代方案,如果没有下面的答案适合。 – 2011-01-25 10:50:35