火狐 browser.webRequest.onBeforeSendHeaders。不知道为什么什么都没有发生

Firefox browser.webRequest.onBeforeSendHeaders. No Clue why nothing happens

所以,这是关于浏览器的扩展,并试图拦截 Headers 并在发出 GET 请求之前与它们交互。 我只是想尝试一些新东西,想尝试一下 webRequest.onBefoerSendHeaders,但它似乎什么也没做。

如果某个 header 存在,我只想将某些内容记录到控制台。 这是我的代码:

var requestFilter = {
    urls: ["random Site"]
}

var extraInfoSpec = ['requestHeaders', 'blocking']

handler = function(details) {

    var headers = details.requestHeaders;

    for (var i = 0, l = headers.length; i < l; ++i) {
        if (headers[i].name == 'User-Agent') {
            console.log("It works!")
            break;
        }
    }

};

browser.webRequest.onBeforeSendHeaders.addListener(handler, requestFilter, extraInfoSpec);

这是清单:

{

"manifest_version": 2,
"name": "test",
"version": "1.0",

"description": "test",

"icons": {
  "48": "empty"
},

"content_scripts": [
  {
    "matches": ["*://random Site/*"],
    "js": ["header.js"]
  }
],

"permissions": [ 
    "webRequest", 
    "webRequestBlocking", 
    "<all_urls>",
]}

我知道有一些未使用的权限和指定的 URL 等不存在。

有人知道为什么它什么都不做吗?在 Firefox 和 Chrom 中应该是 运行。

根据您的 manifest 文件,您似乎正试图将 webRequest API 与内容脚本一起使用。但是 browser.webRequest 不适用于内容脚本,需要将其转换为后台脚本才能工作。

我建议删除内容脚本配置并将代码配置为 运行 作为后台脚本。

"background": {
  "scripts": ["header.js"]
},