2010-04-14 42 views
4

我有一个奇怪的错误发生在我的网站上的IE7/XP和IE8/Vista。 IE发送两个名为PHPSESSID的cookie。IE发送多个具有相同名称的cookie?

如何重现:

  1. 在IE清除缓存数据(没有必要的,如果你从来没有去过unisender.com)。

  2. 访问unisender.com(正好加www重现!),它会重定向到www.unisender.com

  3. 登录使用任何有效的用户名和密码(我已经注册的用户名与testmsdn密码testmsdn - 随意使用用于测试)

  4. 运行您最喜爱的夺交通计划(我喜欢的Wireshark)

  5. 现在点击任何菜单链接(例如“信息”)

  6. 查看捕获的流量 - 您将看到IE发送了双倍的PHPSESSID cookie(并且您在点击之后因此退出)。看起来第一个PHPSESSID来自unisender.com,第二个来自www.unisender.com。

拍摄采样:


GET/EN/letter_list HTTP/1.1

接受:图像/ GIF,图像/ JPEG,图像/ PJPEG,应用程序/ x-MS-应用,应用/ vnd.ms-xpsdocument,应用/ XAML + xml的,应用程序/ x-MS-XBAP,应用程序/ x-冲击波闪光,/

的Referer:http://www.unisender.com/en/intro

Accept-Language:ru

User-Agent:Mozilla/4.0(compatible; MSIE 8.0; Windows NT 6.0;三叉戟/ 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)

接受编码:gzip,放气

主机:www.unisender.com

连接:保持活动

曲奇: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的 - 没有什么帮助。

我想不应该有相同名称的饼干。

我对不对?这是IE中的错误吗?如果这是一个错误,那么是否有解决方法?

还是我错了,这是一个预期的行为?

回答

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

+0

谢谢。我不确定这是一个好的设计决定,但现在至少可以清楚了。顺便提一下,在阅读这个问题之前,我已经阅读了所有“cookie内部”页面。感谢您的网页。但是我没有看到那个段落符合我的问题。 – user316603 2010-04-14 20:43:13

+0

在常见问题解答中,它是“Q3:如果我没有在Cookie中指定DOMAIN属性,IE会将它发送到所有嵌套子域? – EricLaw 2010-04-17 19:16:41

相关问题