【问题标题】:PHP session can't be retrieve after redirection using htaccess使用 htaccess 重定向后无法检索 PHP 会话
【发布时间】:2023-03-17 03:32:02
【问题描述】:

我已经使用.htaccesswww.abc.com 重定向到www.def.com

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

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

请帮帮我。

【问题讨论】:

  • 这很难——如果你能解释为什么你做了这个重定向以及为什么你需要访问会话数据,如果下面的答案都不适合,我们也许可以找到一个替代方案。

标签: php session .htaccess cookies redirect


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这称为“跨站点脚本”(XSS),很多人都非常努力地确保您想要的东西是不可能的。如果您确实找到了解决方法,请务必告知我们,因为这将构成重大安全漏洞。

      【讨论】:

      • 它是检索而不是注入,但它仍在尝试使用脚本(即“脚本”)来跨站点访问信息;这就是跨站脚本的定义。
      【解决方案4】:

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

      除此之外,您还需要确保在两个域上使用相同的会话 ID。如果你想为会话 ID 使用 cookie,你只能在你的域共享一个公共超级域时这样做,所以它们是一个域的子域,如 foo.example.combar.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 常量)。

      【讨论】:

        猜你喜欢
        • 2013-01-05
        • 2016-12-01
        • 1970-01-01
        • 2015-10-02
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        相关资源
        最近更新 更多