Safari/Chrome浏览器中使用Set-Cookie头部设置Cookie,但在开发者控制台中无法显示,但是在查看服务器日志时存在。

28

我正在使用来自Python后端的“Set-Cookie”头响应为我的Web应用程序存储cookies。

enter image description here

这是客户端调用函数的ajax请求: enter image description here 在Chrome和Safari的开发者工具中查找cookies时,cookies没有显示出来。
在Chrome中,Set-Cookie甚至没有出现在网络调用的响应头中。 enter image description here enter image description here 在Safari中,Set-Cookie响应头出现了,并显示在请求/响应cookies下面, enter image description here enter image description here 但是当我检查应用程序的cookies时,什么都没有显示出来。 enter image description here 此外,在Safari中显示的cookie数据是不正确的:它显示了不正确的过期日期和httpOnly/secure,这两个属性都应该为true。
这些cookie似乎不存在,但是当我记录服务器时,我清楚地看到这些cookie存在并且出现了enter image description here(Safari也在请求/响应标头中来回显示它们),这意味着每次调用后,这些cookie被正确存储并在标头中发送回服务器。我之前尝试将httpOnly设置为false并将secure设置为false,但即使如此,cookie的行为仍然一样。

这些cookie仍然不在开发者工具的监测范围内。我该如何在开发者工具中正确查看浏览器上的cookie?这个问题可能是什么原因引起的?


我现在在Safari中看到这个问题。Cookie肯定已经设置(因为服务器看到了它),并且即使重新启动Safari,它也能存活。但是我在控制台中看不到它...这是一个问题,因为我想要删除它! - Doctor Eval
请查看此答案 https://dev59.com/11MI5IYBdhLWcg3wv-TL#55414345。 你应该启用它们。 - endamaco
2个回答

1

你尝试过打开一个指向 https://*.amazonaws.com 的标签页并在那里进行检查吗?

Cookie 将被设置在服务器的域名下,但你无法在本地服务器的 cookie 存储中看到它。原因是所有 web 存储都受同源策略的限制,你的文档只能访问来自自己域名下的存储,而服务器只能为其自身域名下设置 cookie。

这里的原理是,即使我向你发送了一个恶意文档的链接,它也无法窃取你的 SO cookie,即使这些 cookie 可以从 JS 中访问,发送请求到恶意服务器也无法覆盖 SO 上的 cookie。


这是正确的。如果您想使用此安全HTTPOnly cookie方法,则必须将API托管在同一服务器域上。在我的情况下,我通过将我的API托管在api.domainname.com上来解决了这个问题。 - Jonathan Wong

0
尝试禁用chrome://flags/#network-service,它应该可以正常工作。

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