我在Chrome扩展程序中有一个后台页面,可以向服务器发出请求。通过使用Chrome的调试工具,我可以看到返回了各种Set-Cookie
标头。但是,后续请求不包含这些cookie - Chrome似乎将它们丢弃了。这导致对服务器的每个请求都被计为新会话。
服务器端我设置了以下标头:
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true");
客户端我在XMLHttpRequest对象上设置了withCredentials = true
。
我还在扩展清单的权限部分中拥有服务器的地址。
我觉得我在这里非常接近解决方案 - 服务器正在使用正确的标题进行响应,但我无法理解为什么Chrome决定不存储Cookie。
我需要在头文件,XMLHttpRequest对象或清单中设置其他内容吗?或者这是不可能的?
答案 0 :(得分:2)
我终于解决了这个问题。诀窍是将“cookies”权限放入扩展清单中。这并不明显,因为Chrome扩展程序文档仅指出如果您使用chrome.cookies API则需要它 - 我不是。
您还必须启用第三方Cookie。所以我可能需要一个完全不同的解决方案,因为启用第三方cookie不是我想要推荐的。