我们编写了一个Chrome扩展程序,该扩展程序使用onBeforeSendHeaders事件向每个Web请求添加一个cookie:
chrome.webRequest.onBeforeSendHeaders.addListener(addCookie, {
urls: ["<all_urls>"]
}, ["blocking", "requestHeaders"]);
function addCookie(details) {
if (details.url.match(/ourWebsite/)) {
details.requestHeaders.forEach(function (requestHeader) {
if (requestHeader.name.toLowerCase() === "cookie") {
//Code that adds a cookie with a value
}
});
return {requestHeaders: details.requestHeaders};
}
}
在所有人的Chrome(我自己的Chrome)上都可以正常运行。在调试扩展程序时,我注意到details.requestHeaders
数组没有cookie
头(这总是错误的:requestHeader.name.toLowerCase() === "cookie"
)。
我的第一个想法是另一个扩展与我们的扩展弄混了,所以我尝试了隐身(不允许其他扩展),但是没有用。
在扩展程序的清单中,我们在permissions
下有“ cookies”和“ webRequest”。
有什么想法吗?预先感谢!
答案 0 :(得分:1)
根据此https://developer.chrome.com/extensions/webRequest
从Chrome 72开始,未提供以下请求标头,并且如果未在opt_extraInfoSpec中指定'extraHeaders',则无法修改或删除以下请求标头:
- 接受语言
- 接受编码
- 推荐人
- 饼干
因此,您应该在chrome.webRequest.onBeforeSendHeaders.addListener
的第三个参数中添加“ extraHeaders”,对于您的示例,它应该为["blocking", "requestHeaders", "extraHeaders"]
。