我有一个以下域名的设置:
mydomain.com
www.mydomain.com
有一个问题(在Internet Explorer上测试):如果为mydomain.com设置了一些cookie,即使我为www.mydomain.com设置了相同名称的cookie,此cookie也对www.mydomain.com有效。
更具体的例子:
1)用户在网站mydomain.com上选择他喜欢的语言,然后我设置cookie usrlng=en
2)第二天,另一个人使用同一台计算机,导航到www.mydomain.com并选择他的语言,我设置了usrlng=de。但是Internet Explorer一直在向服务器发送cookie usrlng=en和usrlng=de (我在Fiddler中看到了这一点)!为什么它发送相同的cookie两次,而不是用subdomain值覆盖'usrlng‘?
同时,我看到子域的PHPSESSID被正确覆盖,没有两个PHPSESSID cookie被发送到服务器。
如何修复usrlng cookie并使其与PHPSESSID的工作方式相同?
发布于 2012-03-31 00:58:50
您还可以为每个...设置不同的save_path。所以他们不会共享会话。PHP示例:
$subdomain = array_shift(explode('.',$_SERVER['HTTP_HOST']));
ini_set('session.save_path','D:\website_sessions\'.$subdomain.'\');
ini_set('session.save_path','D:\website_sessions\'.$subdomain.'\');PHP需要访问才能写入会话目录。
发布于 2011-09-15 16:20:12
现在,我通过设置cookie的'host‘而不是’domain‘解决了这个问题;允许'host’属性将cookie限制为mydomain.com或www.mydomain.com。
也许这是唯一的办法,' domain‘不能设置为oveeride顶级域cookie。
https://stackoverflow.com/questions/7413667
复制相似问题