为什么我不能在子域之间传递用户会话?

时间:2009-04-27 21:45:48

标签: php session cookies

首先,我在本文中使用了所有建议的方法: Allow php sessions to carry over to subdomains

为方便起见,以下是我已经遵循的提示:

  

以下是3个选项。

     

将它放在你的php.ini中:

session.cookie_domain = ".example.com"
     

在.htaccess中:

php_value session.cookie_domain .example.com
     

作为脚本中的第一件事:

ini_set('session.cookie_domain','.example.com' );

我有9个子域名(losangeles.mysite.com,sandiego.mysite.com等),我希望用户能够在他们之间保持签名。但是,截至目前,服务器正在将每个子域视为具有单独会话的完全包含的站点。

还有什么我可以做的吗?或者我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

我怀疑为.foo.example.com而不是.example.com设置了Cookie。尝试为Firefox安装Live HTTP Headers附加组件并检查cookie的设置。

要执行此操作,请打开Live HTTP Headers并打开窗口,转到设置cookie的页面。在窗口中,应该有一行看起来像这样。

Set-Cookie:lng = en-US;路径= /;域= .example.com的;

如果为domain = .foo.example.com设置了cookie;然后你知道问题是什么。但是,如果域名是.example.com,则会发生其他事情。

此外,如果在foo.example.com上为.example.com设置了Cookie,请检查浏览器是否向bar.example.com发送Cookie。这应该有助于追踪问题所在。