为什么 Chrome 忽略 Set-Cookie 头部?

19

Chrome在忽略Set-Cookie头方面有着悠久的历史。其中一些原因被称为错误并得到修复,其他原因则一直存在。这些原因在文档中都很难找到。

  • 302重定向不允许使用Set-Cookie
  • 如果主机名是localhost,则不允许使用Set-Cookie
  • 如果Expires超出可接受范围,则不允许使用Set-Cookie

我目前正在努力让Chrome接受一个简单的会话cookie。Firefox和Safari似乎接受大多数符合RFC规范的Set-Cookie字符串。但是Chrome顽固地拒绝承认请求中发送了Set-Cookie指令(在开发者工具(网络)中未显示)。curl看起来没问题。

所以,请问是否有1)跨浏览器Set-Cookie格式的现代最佳实践或2)关于什么可能导致Chrome在此处失败的更多信息?

谢谢。


1
通常情况下,Set-Cookie在Chrome中适用于常规情况。如果它不能正常工作,大多数网站都会崩溃。因此,这意味着您要么以不寻常的方式使用它,要么代码存在错误。在每种情况下,您都必须实际共享您的代码,以便其他人找出可能出错的地方。 - Evert
我遇到了同样的问题。Chrome 版本 71 可以接受 Cookie,Firefox 和 Edge 也可以接受 Cookie,Postman 和 curl 也可以接受 Cookie。但是我无法让 Chrome 版本 72 接受 Cookie。 - Stack Underflow
3
我也在Chrome 72中遇到了这个问题。原来是因为我们的服务器发送了一个时间戳早了一小时的Date头信息,但cookie过期头信息是准确的。看起来Chrome使用了错误的日期头信息,并认为cookie已经过期,因此没有设置它。 - Eric Damtoft
2
哇...我花了好几个小时来解决一个关于cookie不更新的问题。原来Chrome会忽略本地主机的set-cookie头信息。感谢这篇文章! - Agustin Garzon
@AgustinGarzon 谢谢你的帮助。我一直看到一些奇怪的错误,Chrome会覆盖不存在的cookie,但是当我将域名从localhost切换后,一切都正常了。 - Jono
1个回答

3

有一件事情并不在你的列表中,但却曾让我感到困扰:如果你试图通过HTTP在localhost上设置安全cookie,Chrome会拒绝它,因为你没有使用HTTPS。

这种做法似乎有道理,但对于本地开发来说很烦人。(Firefox显然对此例外,并允许在localhost上通过HTTP设置安全cookie。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接