为啥 Chrome 会忽略 Set-Cookie 标头?
Posted
技术标签:
【中文标题】为啥 Chrome 会忽略 Set-Cookie 标头?【英文标题】:Why does Chrome ignore Set-Cookie header?为什么 Chrome 会忽略 Set-Cookie 标头? 【发布时间】:2018-08-10 10:26:35 【问题描述】:Chrome 长期以来一直忽略 Set-Cookie 标头。其中一些原因被称为错误并已修复,其他原因是持久的。它们都不容易在文档中找到。
302 重定向中不允许设置 Cookie 如果主机是 localhost,则不允许设置 Cookie 如果 Expires 超出可接受范围,则不允许设置 Cookie我目前正在努力让 chrome 接受一个简单的会话 cookie。 Firefox 和 Safari 似乎接受大多数符合 RFC 的 Set-Cookie 字符串。 Chrome 顽固地拒绝承认甚至在请求中发送了 Set-Cookie 指令(未显示在开发人员工具(网络)中)。卷曲看起来不错。
那么有没有人知道 1) 跨浏览器 Set-Cookie 格式的现代最佳实践,或者 2) 关于什么可能导致 Chrome 在此处出现故障的更多信息?
谢谢。
【问题讨论】:
通常 Set-Cookie 适用于 Chrome 中的常规情况。如果不是大多数,则网络中断。因此,这意味着您要么 1)以不寻常的方式使用它,要么 2)您的代码中存在错误。在每种情况下,您都必须实际分享您的代码,以便其他人找出可能有什么问题。 我遇到了同样的问题。 Chrome 版本 71 接受 cookie,Firefox 和 Edge 接受 cookie,Postman 和 curl 接受 cookie。但我无法让 Chrome 72 版接受 cookie。 在 chrome 72 中也遇到了这个问题。结果是,由于某种原因,我们的服务器发送回了一个小时后的 Date 标头,并且 cookie 到期标头是准确的。似乎 chrome 关闭了不正确的日期标题,并解释为 cookie 已设置为过去过期,因此没有设置它。 哇...我花了几个小时处理一个无关的错误,cookie 没有更新。事实证明,Chrome 忽略了 localhost 的 set-cookie 标头。感谢这篇文章! @AgustinGarzon 谢谢你。看到 chrome 会覆盖不存在的 cookie 的奇怪错误,一旦我从 localhost 作为域名切换,一切正常。 【参考方案1】:有一件事让我很头疼并且不在你的清单上:如果你试图通过 HTTP 在localhost
上设置一个安全的 cookie,Chrome 会拒绝它,因为你没有使用 HTTPS。
这种方法是有道理的,但对本地开发来说很烦人。 (Firefox 显然对这种情况做了一个例外,并允许在 localhost
上通过 HTTP 设置安全 cookie。
【讨论】:
以上是关于为啥 Chrome 会忽略 Set-Cookie 标头?的主要内容,如果未能解决你的问题,请参考以下文章