使用htaccess重定向后无法检索PHP会话

时间:2011-01-25 09:13:01

标签: php session .htaccess cookies redirect

我使用www.abc.com完成了从www.def.com.htaccess的重定向。

重定向是成功的但我遇到了一个问题,即只有在我使用def.com访问网站时才能访问 cookies 和会话。 从abc.com检查时,会话将会丢失。

如何在def.com复制或阅读会话?

请帮助我。

4 个答案:

答案 0 :(得分:0)

你不能简单地做到这一点。也许看this post

答案 1 :(得分:0)

包含会话ID的cookie(因此,整个会话)仅在创建它的域中有效。因此,当您更改域时,cookie将不再可用。要解决此问题,您可以将会话ID发送到新域(这不是很安全,但您可能不关心),然后为该域创建新的cookie和会话。

答案 2 :(得分:0)

这称为“跨站点脚本”(XSS),很多人都非常努力地确保你想要的东西是不可能的。如果你确实找到了办法,请务必告诉我们,因为这将是一个主要的安全漏洞。

答案 3 :(得分:0)

当您可以从两个服务器访问会话数据存储时,您只能在两个域上共享同一会话。您可能需要撰写session data storage type and location

,具体取决于own session storage handler

除此之外,您还需要确保在两个域上使用相同的会话ID。如果您想使用Cookie作为会话ID,则只有当您的域共享一个公共超级域时才能使用Cookie,因此它们是域的子域,如 foo.example.com bar.example.com 共享超级域 example.com 。在这种情况下,您需要adjust the session cookie parameter domain并将其设置为超级域 example.com 的值.example.com

否则,就像在您的示例中,域仅将 com 作为顶级超级域共享时,您不能使用cookie(首先)。但您可以使用URL将会话ID从一个域转移到另一个域。为此,您需要启用session.use_trans_sid并禁用session.use_only_cookies(至少在重定向目标域上)并将会话ID附加到从一个域指向另一个域的每个URL(此处您可以使用SID常数)。