在我使用开发环境和语言的组合编写的应用程序中,我需要从两个不同的子域访问cookie,每个子域位于单独的主机上.
使用后面www.mydomain.com
的PHP代码设置cookie ,我试图从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上运行
如果我能提供任何进一步的信息以便更好地描述问题,请告诉我!
为了阅读此问题的任何人的利益,原始帖子中包含的代码和信息完全正确并且正常工作.
问题是当你引入其他技术时.例如,我已经了解到通过Python模块发送PHP代码,允许Django提供PHP文件/内容,这会改变脚本可访问的内容和不可访问的内容.
这最终是在Marc Novakowski的建议下发现的,他建议发送$_COOKIE
到日志以找出其中的内容.
我还检查了$_SERVER
和$_GET
.这$_GET
让我感到空虚,因为我试图使用的设置并不像我想象的那么简单.正是这种错误的理解导致在原帖中没有包含关于Django的信息.
向所有回答此问题的人表示歉意和感谢!