Safari 5不会将所有cookie发送回服务器

时间:2010-06-29 01:45:18

标签: cookies safari

我在Safari 5中看到了这个问题(实际上它至少从4.0.5开始流行),似乎它没有正确设置cookie。该网站适用于Firefox,IE和Chrome。

但是,我可以通过查看它使用的Safari的cookie plist来验证cookie是否正确设置。在Windows 7上,它存储在此处:C:\ Users \\ AppData \ Roaming \ Apple Computer \ Safari \ Cookies \ Cookies.plist

现在,我正在处理的网站使用的cookie非常广泛,并存储在不同的域中。

比方说,该网站是www.foo.com。 登录cookie设置为domain .foo.com。 此外,其他cookie存储在域名www.foo.com,a.foo.com,b.foo.com等。

当访问www.foo.com并“忘记”发送所有应该发送的cookie时,Safari似乎感到困惑(www.foo.com,.foo.com)。

我不确定这是否是我的错误(cookie中的无效字符)或者这是Safari的错误。我想知道是否有人遇到过这个并找到了

谢谢!

编辑:我关注的一个cookie非常大,长度不到4k。它包含编码信息,它包含的字符是字母数字和/ + _ =

现在奇怪的是,根据cookie设置的域,cookie本身可以正常工作。但是,当用户登录时,会添加另一个cookie,Safari似乎忽略了第一个cookie。 Safari发送登录cookie很好,它由字母数字和[] _ \

组成

我最初的想法是,这可能是域名冲突。当登录cookie设置为.foo.com时,第一个cookie被设置为www.foo.com。但是,我测试了这个理论,将它们都设置为.foo.com,问题仍然存在。

1 个答案:

答案 0 :(得分:11)

查看浏览器大小限制here。 Safari 5每个请求限制为4kb。因此,如果域的所有cookie(包括相关的通配符域)的总大小超过4k,您将开始丢失cookie。 我相信逻辑是,最先牺牲最旧的cookie,直到总cookie头大小低于4k。

我们目前自己遇到了这个问题的问题,但也发现了另一种情况,其中cookie丢失了,尽管我们还没有理解为什么会出现这种情况。

鉴于你的单个cookie的大小,下面的请求可能会添加一个新的cookie,使总大小超过限制。