7

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

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

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

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

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

我觉得我非常接近这里的解决方案 - 服务器以正确的标头响应,但我不太明白为什么 Chrome 决定不存储 cookie。

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

4

1 回答 1

3

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

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

于 2011-07-03T00:07:05.897 回答