4

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

服务器端我有以下标题设置:

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

客户端我有XMLHttpRequest对象withCredentials = true集。

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

我觉得我非常接近这里的解决方案 - 服务器正在响应正确的标题,但我无法弄清楚为什么Chrome决定不存储Cookie。

是否还有其他东西需要在标题,XMLHttpRequest对象或清单中设置?或者这是不可能的?

+0

后续请求是否也返回set-cookie头? – Gerben

+0

是的,因为总会有一个新的会话。我最终找到了一个解决方案,并在下面发布了它,但这有点垃圾,因为我必须启用第三方Cookie。 – kanassa

回答

2

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

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