为什么设置 document.cookie 在 Chrome 中不起作用?

新手上路,请多包涵

我的同事遇到了一个问题,即无法通过如下代码在 Chrome 上设置 cookie:

document.cookie = "TEST=1; expires=Tue, 14 Oct 2014 20:23:32 GMT; path=/"

document.cookie 立即放入控制台会显示结果,就好像我没有做任何改变一样。刷新页面时,cookie 不存在,因此报告正确,只是设置不正确。

如果他打开一个新的隐身窗口并为其他所有人工作,上面的代码就会工作。我使用开发工具删除了他所有的 cookie,但仍然没有手动设置 cookie(尽管其他人会返回通过服务器标头设置的 cookie)。

他重新启动 Chrome 后,它开始正常运行,所以他似乎遇到了一些无法再重现的怪癖或错误。

还有其他人遇到过这个吗?截至目前,我正在考虑检查 document.cookie 报告设置后的预期内容,然后在用户禁用 cookie 时启动我们的无 cookie 流程,当事情不匹配时。我讨厌这样做的想法,所以任何建议/答案都会很棒。

原文由 Dave Stein 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.1k
1 个回答

cookie 的工作方式,至少在 Chrome 中,有点奇怪。

如果您需要更改 cookie 的值,则需要逐个添加/设置 每个 键。

在你的控制台试试这个:

 document.cookie; // -> "expires=Tue, 14 Oct 2014 20:23:32 GMT; path=/"
document.cookie = 'TEST=1';
document.cookie; // -> "TEST=1; expires=Tue, 14 Oct 2014 20:23:32 GMT; path=/"

是的,它添加了密钥,并没有用 TEST=1 替换整个 cookie。

如果您需要删除密钥,您可以不提供任何值: TEST=

我希望这能让你摆脱 cookie 的噩梦(这是给我的)。

原文由 avetisk 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题