Chrome扩展程序-requestHeaders对象没有'cookie'标头

时间:2018-11-06 15:58:21

标签: javascript cookies google-chrome-extension http-headers

我们编写了一个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”。

有什么想法吗?预先感谢!

1 个答案:

答案 0 :(得分:1)

根据此https://developer.chrome.com/extensions/webRequest

  

从Chrome 72开始,未提供以下请求标头,并且如果未在opt_extraInfoSpec中指定'extraHeaders',则无法修改或删除以下请求标头:

     
      
  • 接受语言
  •   
  • 接受编码
  •   
  • 推荐人
  •   
  • 饼干
  •   

因此,您应该在chrome.webRequest.onBeforeSendHeaders.addListener的第三个参数中添加“ extraHeaders”,对于您的示例,它应该为["blocking", "requestHeaders", "extraHeaders"]