我有以下域名的设置:
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,而不是用子域值覆盖'usrlng'?
同时我看到PHPSESSID正在被子域正确覆盖,没有两个PHPSESSID cookie被发送到服务器。
如何修复usrlng cookie并使其工作方式与PHPSESSID相同?
答案 0 :(得分:2)
您还可以为每个...设置不同的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需要访问在sessions目录中写入。
答案 1 :(得分:1)
现在我通过设置cookie的'host'而不是'domain'来解决问题; 'host'属性允许将cookie限制为mydomain.com或www.mydomain.com。
也许这是唯一的方法,“域名”无法设置为超级顶级域名Cookie。