2

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

所以,设置是我有以下内容:

开发环境:

  • 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. 等)。

我究竟做错了什么?

4

2 回答 2

0

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

于 2013-09-17T08:16:13.750 回答
0

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

于 2016-08-10T06:58:53.397 回答