我有这个非常简单的代码
<?php
var_dump($_COOKIE);
setcookie("TestCookie", 'Value1', time()+3600, '/', $_SERVER["SERVER_NAME"]);
die();
?>
在myDomain.com和sub.myDomain.com上运行相同的代码
第一次加载页面时,vardump为空,但第二次,我有TestCookie变量。在Chrome,Firefox,Safari和其他许多网站上,它可以在myDomain.com和sub.myDomain.com上使用。
但是在IE浏览器中,如果我去mydomain.com然后转到sub.mydomain.com,如果我将cookie的值更改为“Value2”,那么在sub.mydomain.com上的cookie就有点冻结了仍然会显示“Value1”,直到我在mydomain.com上更改它。 (我做了多次重新加载,以确保var_dump确实采用了cookie)
如果我关闭IE并直接转到sub.mydomain.com而不访问mydomain.com我可以更改cookie而不会出现任何问题,这个问题只会在我第一次访问mydomain.com然后再访问sub.mydomain.com时发生,并且当然,只在IE上(测试IE8到IE11)
关于我如何解决这个问题的任何想法?
编辑:经过一番挖掘,如果我查看浏览器在IE浏览器中使用函数getallheaders()发送的标题,在“Cookie”部分,我得到两个值'TestCookie = Test2; TestCookie = Test3',因此IE发送子域和主域的cookie,但PHP只读取第一个。所以只有基于主域的cookie。