在IE7中有两个同名的cookie时该怎么办?

时间:2009-08-06 14:01:57

标签: internet-explorer cakephp cookies swfupload

一些背景知识:

CakePHP除PHPSESSID外还编写自己的会话ID cookie。这用于验证请求。然后SWFupload发送一个文件,该令牌进行身份验证,并被选为新的用户代理 - 因此在cakephp中,您必须禁用“check-user-agent”安全功能。

在很多浏览器上这已经足够了。 IE7版本和SWF版本似乎没有与此错误相关联。在我们的例子中,IE7存储/发送相同cookie的两个版本。所以第一个问题是为什么?怎么样?

进一步解释:

因为这些重复的cookie存储在头字符串的开头和结尾,所以PHP / Cake接收到一端,如果它是一个欺骗,所以它“选择”一个,我设置并在swfobject中发送的手动cookie是另一个曲奇饼。我可以想到一些黑客来解决这个问题 - 但我真的想知道这种情况最初是如何产生的。

CakePHP似乎也没有在注销和登录时生成唯一的CakeSession ID,这可能是原因,解决方案可能是强制蛋糕在任何地方使用PHPSESSID,或者可能只是为了确保swfupload发送正确的SESSID ......

编辑一个: CakePHP发送的cookie标头是:

Set-Cookie: CAKEPHP=gqlpa88blmhmdsmv9e99ga16b3; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/
Set-Cookie: CAKEPHP=deleted; expires=Wed, 06-Aug-2008 13:21:01 GMT; path=/
Set-Cookie: CAKEPHP=ob5695trnspprlohiunrpqgkm0; expires=Thu, 13-Aug-2009 13:21:02 GMT; path=/

欢迎任何想法!

2 个答案:

答案 0 :(得分:7)

如果为不同的域或路径设置了两个cookie,则它们可能具有相同的名称。

例如,如果您在“www.example.com”和“example.com”上设置了Cookie“ID”,那么每次“www.example.com”请求都会发送两个ID Cookie或“anything.www.example.com”。

为了防止这种情况发生,请确保您始终为同一个域设置Cookie,如果您碰巧有多个域名别名到同一个服务器(例如www.example.com和example.com),那么请进行一次重定向到另一个。

同样,不要使用不同的路径值设置相同名称的cookie。

答案 1 :(得分:4)

据我记得,如果你设置一个已经存在的cookie,它只会覆盖旧cookie的值和到期日期......这是每个域。意味着你可以在/和/之下拥有2个同名的cookie,它们不会互相覆盖。

其网站内的cookie名称是唯一的。至少在标准方面。不知道IE7是否遵循这一点。

或者不是你要问的?

问候