Cookies Safari没有';我不喜欢饼干,但IE/FF喜欢

Cookies Safari没有';我不喜欢饼干,但IE/FF喜欢,cookies,safari,cross-browser,Cookies,Safari,Cross Browser,我在safari上发现了一个奇怪的饼干问题。如果您浏览到,您可以使用FF/IE进入并在网站内浏览 但是如果你使用safari,你只能进入一次;你不能在网站内冲浪。我发现Safari没有设置输入的cookie,但是FF/IE设置了 这里怎么了?看起来你在这里碰到了一个狩猎迷;您正在将任何访问的浏览器重定向到/条目,同时设置cookie,而Safari在遇到302 HTTP状态时将忽略Set cookie标头: $ curl -so /dev/null -D - http://4much.schni

我在safari上发现了一个奇怪的饼干问题。如果您浏览到,您可以使用FF/IE进入并在网站内浏览

但是如果你使用safari,你只能进入一次;你不能在网站内冲浪。我发现Safari没有设置输入的cookie,但是FF/IE设置了


这里怎么了?

看起来你在这里碰到了一个狩猎迷;您正在将任何访问的浏览器重定向到/条目,同时设置cookie,而Safari在遇到302 HTTP状态时将忽略Set cookie标头:

$ curl -so /dev/null -D - http://4much.schnickschnack.info/
HTTP/1.1 302 Moved Temporarily
Server: nginx/0.7.61
Date: Sun, 19 Jul 2009 12:20:49 GMT
Content-Type: text/html;charset=utf-8
Connection: keep-alive
Content-Length: 14260
Content-Language: de
Expires: Sat, 1 Jan 2000 00:00:00 GMT
Location: http://4much.schnickschnack.info/entry
Set-Cookie: colorstyle="bright"; Path=/; Expires=1248092449.12
Set-Cookie: _ZopeId="73230900A39w5NG7q4g"; Path=/
从技术上讲,这将是苹果基金会类中的一个bug,我发现A是这样的。

我认为解决方法是将cookie设置为条目而不是索引,而不是html


在我第一次回答这个问题之后的几年里,这个问题现在似乎已经解决了,至少是在Safari 6上。

一个月前,我遇到了这个问题。一开始我以为那是一个坏掉的饼干罐,因为我可以把饼干清理干净然后离开

然而,它又出现了。这一次,我花了一个小时查看它,观察发送的内容,回顾safari发送回来的内容,我发现了问题所在

在本例中,我有一个cookie值数组,在重定向之前登录后发送到浏览器。这些值类似于“用户id”、“用户全名”、“其他id”等

(是的,id是加密的,所以不用担心)

我的用户全名实际上是
格式

当safari将cookie发回服务器时,删除姓氏后逗号后的所有内容。它只是将值回传到那个点

当我删除逗号时,其余的值开始正常工作

因此,如果您发送一个包含逗号的cookie值,那么safari无法在其内部存储中正确转义该值。这让我想到,如果它们没有正确地转义逗号,那么safari的cookie处理代码可能存在一些安全问题

顺便说一句,这是在Win7 x64和safari 4.0.5上测试的。我还在:上建立了一个网页,显示了这个问题。(我删除了那个测试站点)


IE、FF和chrome都正确设置了cookie。萨法里没有

看来这不再是个问题了。参见

我在Chrome上遇到了同样的问题。在重定向时,Chrome不会忽略设置cookie头,但您永远不知道顺序(先设置cookie或先重定向)。以下是我尝试过的一些东西:

我有一个网站,支持英语和法语。我(用php)以这种方式实现了它:

localhost有一个指向localhost/fr的链接(该链接将cookie设置为法语并重定向到localhost)。它起作用了。(首先设置cookie)

localhost/path1有一个指向localhost/fr?return=/path1的链接(该链接将cookie设置为法语并重定向到localhost/path1)。它不起作用。(首先重定向,语言没有更改)

localhost/path1有一个指向localhost/fr?return=www.google.com的链接(该链接将cookie设置为法语并重定向到google)。当我再次回到我的网站时,它是用法语写的。(这意味着不会忽略将cookie设置为法语,仅在重定向后执行)


希望我说清楚,英语对我来说是一门外语。

我们遇到了一个非常类似的问题,Safari(7.0.6版)会忽略cookie。cookie头看起来非常好,几乎与另一个被记住的cookie相同


事实证明,罪魁祸首是上一个cookie头,它的
expires
值格式不正确。Safari对损坏的cookie头的处理显然不如其他浏览器那么健壮。

除了:有史以来最好的域名之外,我没有什么可添加的。呵呵,thx:)也许我会出售它:)也许你可以解释一下cookie设置部分。例如:它是由Plone插件还是自定义代码完成的?cookie是由我的自定义代码设置的。必须在输入时设置,而不是在2次/输入时设置。在对答案的重播中,我发布了一些代码。nevermind,工作于/entry:)Thx!谢谢你的解释,Martjin!我已将代码输入到/条目中。现在它起作用了。谢谢!克里斯:你的问题与语法分析器完全相关。这与CFNetwork在HTTP解析期间如何将集合Cookie头合并为一个集合Cookie头有关。通常,可以使用“,”分隔符将重复的HTTP头合并到一个头中。不幸的是,Set Cookies在历史上一直是一个破损的标题。这在最近的IETF会议上进行了讨论。Cookie的内部表示并没有问题。@马克·保利:很高兴看到苹果开发人员积极谈论safari如何处理Cookie。我在网站上看到了你的一些信件,我认为safari是唯一一个表现出这种破坏行为的浏览器,这一事实足以让我放弃这一功能;但是,这种行为在Safari 5.0.3中仍然存在。克里斯:看看新的cookie RFC。这是“未来”@马克·保利:谢谢你的链接!因此,似乎应该避免使用引号、分号、逗号和反斜杠,除非使用base64等编码方式……这显然在Safari中仍然是一个问题,请参阅文章下面的评论……expires值的格式有哪些错误?@JohnBachir抱歉,我不记得了。日期格式可能无效。