javascript – Chrome会在扩展程序中忽略XMLHttpRequest中的Set-Cookie响应标头

我在Chrome扩展程序中有一个后台页面,可以向服务器发出请求.通过使用Chrome的调试工具,我可以看到返回了各种Set-Cookie标头.但是,后续请求不包含这些cookie – Chrome似乎将它们丢弃了.这导致对服务器的每个请求都被计为新会话.

服务器端我设置了以下标头:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");

客户端我在XMLHttpRequest对象上设置了withCredentials = true.

我还在扩展清单的权限部分中有服务器的地址.

我觉得我在这里非常接近解决方案 – 服务器正在使用正确的标题进行响应,但我无法理解为什么Chrome决定不存储cookie.

我需要在头文件,XMLHttpRequest对象或清单中设置其他东西吗?或者这是不可能的?

最佳答案 我终于解决了这个问题.诀窍是将“cookies”权限放入扩展清单中.这并不明显,因为Chrome扩展文档仅表明如果您使用chrome.cookies API则需要它 – 我不是.

您还必须启用第三方Cookie.所以我可能需要一个完全不同的解决方案,因为启用第三方cookie不是我想要推荐的.

点赞