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