【问题标题】:Cross Subdomain Cookie Not Working As Expected On Sub-Subdomain跨子域 Cookie 在子子域上未按预期工作
【发布时间】:2013-09-21 13:45:44
【问题描述】:

我正在使用系统登录到使用子域的多个子域的站点。我有这个系统的开发和实时版本,但是我遇到了奇怪的行为。

所以,我的设置如下:

开发环境:

  • dev.mydomain.com
  • sub1.dev.mydomain.com
  • sub2.dev.mydomain.com

现场环境:

  • live.mydomain.com
  • sub1.live.mydomain.com
  • sub2.live.mydomain.com

作为登录过程的一部分,我使用以下行来设置 cookie:

setcookie("LoggedIn", 1, 0,'/','.mydomain.com');

这一切都很好,我可以登录一次并访问所有内容,但是我想限制它,以便如果我登录到测试系统,那么我就不会登录到实时系统,反之亦然。

我预计解决方案是:

setcookie("LoggedIn", 1, 0,'/','.test.mydomain.com');

setcookie("LoggedIn", 1, 0,'/','.live.mydomain.com');

取决于系统。

但是,使用此方法,我可以独立登录 test.mydomain.com 和 live.mydomain.com,但无法登录子子域(sub1.test.mydomain.com,sub2.等)。

我做错了什么?

【问题讨论】:

  • 这些域在 /subdomains/sub/ 和 /subdomains/sub.sub/ 或 /subdomains/sub/sub/ 中的物理文件位置是什么

标签: php session cookies subdomain


【解决方案1】:

可能是因为same-origin-policy。请通过它。

【讨论】:

  • 但如果是这样的话,一开始是行不通的
【解决方案2】:

我完全同意您的期望,子域 cookie 应该优先于顶级域,但是在大多数 Web 框架中,您不能有重复的 cookie id,所以即使您将 cookie 域设置为顶级域和子域仍然都是有效的,所以我认为最安全的解决方案是您应该尝试更改该特定域的 cookie id,通常我将其作为变量放在应用程序配置中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2012-01-19
    相关资源
    最近更新 更多