只有在IE中首次访问子域时,Cookie才会更改

时间:2016-07-13 13:16:25

标签: internet-explorer cookies subdomain

我有这个非常简单的代码

<?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。

0 个答案:

没有答案