在我使用开发环境和语言组合编写的应用程序中,我需要从两个不同的子域(每个子域位于单独的主机上)访问 cookie。
cookie 正在设置www.mydomain.com
使用下面的 PHP 代码,我尝试从distant.mydomain.com
在单独的主机上。
setcookie('token', base64_encode(serialize($token)), time()+10800, '/', '.mydomain.com');
我正在尝试从以下位置访问 cookiedistant.mydomain.com
使用以下代码:
if (isset($_COOKIE['token'])) { /* do stuff */ }
问题:distant.mydomain.com
没有找到 cookie。 The if
即使 cookie 存在,刚才提到的语句也会返回 false。
我已经验证设置的cookie是用于mydomain.com
(通过检查我的 Firefox cookie)。我想不出有什么理由这行不通。
使用相同的setcookie
代码,我有一个旧的应用程序专门运行在www.mydomain.com
主机,并且该应用程序能够跨域访问 cookie。这让我怀疑问题与单独的主机有关。
以防万一以下任何信息相关:
- www.mydomain.com
是 IIS 6.0
- distant.mydomain.com
是阿帕奇2.2.9
- 两台服务器都使用 PHP 5.2.x
- 两台服务器均在 Windows Server 2003 上运行
如果我可以提供任何进一步的信息以便更好地描述问题,请告诉我!