我的网站上的IE7 / XP和IE8 / Vista中发生了一个奇怪的错误。 IE发送两个名为PHPSESSID的cookie。
如何重现:
在IE中清除Cookie(如果您从未访问过unisender.com,则不需要)。
访问unisender.com(完全没有www重现!),它将重定向到www.unisender.com
使用任何有效的用户名和密码登录(我已注册用户名testmsdn,密码为testmsdn - 随时可用于测试)
运行您最喜爱的捕获流量计划(我更喜欢wireshark)
现在点击任何菜单链接(例如“消息”)
查看捕获的流量 - 您将看到IE发送双PHPSESSID cookie(因此,您在点击后退出)。似乎第一个PHPSESSID来自unisender.com,第二个来自www.unisender.com。
捕获的样本:
GET / en / letter_list HTTP / 1.1
接受:image / gif,image / jpeg,image / pjpeg,application / x-ms-application,application / vnd.ms-xpsdocument,application / xaml + xml,application / x-ms-xbap,application / x -shockwave-flash, /
参考者:http://www.unisender.com/en/intro
接受语言:ru
User-Agent:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 6.0; Trident / 4.0; Mozilla / 4.0(兼容; MSIE 6.0; Windows NT 5.1; SV1); SLCC1; .NET CLR 2.0.50727 ;. NET CLR 3.5.21022; .NET CLR 3.5.30729; FDM; .NET CLR 3.0.30729)
Accept-Encoding:gzip,deflate
主持人:www.unisender.com
连接:Keep-Alive
Cookie:authchallenge = 3a9cfcfc9fe33822e3e21d75c8a3d3e4; PHPSESSID = 14ea1cb133632951592397c86eaf037e; us_reg_ref =未知; us_reg_url = HTTP%3A%2F%2Funisender.com%2F; __utma = 1.778517853.1271204400.1271204400.1271204400.1; __utmb = 1.3.10.1271204400; __utmc = 1; __utmz = 1.1271204400.1.1.utmcsr =(直接)| utmccn =(直接)| utmcmd =(无); PHPSESSID = 65e110aeb995a66b9dc8da5656c7a3da; last_login_name = testmsdn
我尝试过使用会话和非会话cookie,尝试使用.unisender.com代替unisender.com获取cookie - 没有任何帮助。
我想不应该有同名的cookie。
我是对的吗?这是IE中的错误吗?如果它是一个错误,那么有一个解决方法吗?
或者我错了,这是预期的行为?
答案 0 :(得分:3)
这是按设计的。
您应该不为您网站的“www-less”版本发送cookie,或者您的站点的两个版本都应在PHP会话cookie上设置“domain = example.com”属性。
否则,这些cookie实际上并不相同,因此您将被发送两个。 http://blogs.msdn.com/ieinternals/archive/2009/08/20/WinINET-IE-Cookie-Internals-FAQ.aspx