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

kan*_*ssa 6 javascript cookies xmlhttprequest setcookie google-chrome-extension

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

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

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
Run Code Online (Sandbox Code Playgroud)

我已经withCredentials = true在客户端上设置了XMLHttpRequest对象。

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

我觉得我在这里已经很接近解决方案了-服务器以正确的标头进行响应,但是我无法弄清楚为什么Chrome决定不存储Cookie。

我还需要在标题,XMLHttpRequest对象或清单中设置其他内容吗?还是这不可能?

kan*_*ssa 3

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

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