带有清单V3的Chrome扩展无法访问WebRequest

u5i3ibmn  于 2023-03-10  发布在  Go
关注(0)|答案(1)|浏览(394)

我试图使一个Chrome扩展,使用清单版本3,它访问来自网页的网络请求。
以下是清单的相关部分,包括权限:

{
    "manifest_version": 3,
    ...
    "permissions": [
        "webRequest",
        "webRequestBlocking",
        "<all_urls>"
    ],
    "content_scripts": [
        {
          "js": ["scripts/content.js"],
          "css": ["styles.css"],
          "matches": [
            "<the site>"
          ],
          "run_at": "document_idle"
        }
    ],
}

在内容脚本content.js中,我向chrome.webRequest注册了一个侦听器:

chrome.webRequest.onBeforeRequest.addListener(
    (request) => {
        console.log(request);
    }
)

当我检查页面控制台时,来自content.js的其他日志行显示出来,但没有Web请求。
此外,当我在Chrome Developer Tools〉Sources窗口中查看脚本时,我看到了以下错误。

编辑:这个问题过早地关闭了,因为它被认为是一个重复的问题。相关的问题基于清单的V2,而这个问题专门针对V3。前面的答案引用了V3中不存在的后台脚本。

tv6aics1

tv6aics11#

我猜你把content.jsbackground.js搞混了。试着把你的代码放进background.js,完整的代码就像这样:

{
  "name": "My  Extension",
  "description": "This extension will run on your pages.",
  "version": "1.0",
  "manifest_version": 3,
  "permissions": ["webRequest", "webNavigation","background"],
  "host_permissions": ["*://*/*"],
  "content_scripts": [
    {
      "matches": [
        "*://*/path/*"
      ],
      "js": ["scripts/content.js"],
    }
  ],
  "background": {
    "service_worker": "scripts/background.js"
  },
  "icons": {
    "16": "images/icon16.png",
    "32": "images/icon32.png",
    "48": "images/icon48.png",
    "128": "images/icon128.png"
  }
}

等等,您的background.js文件应该是这样的:

chrome.webRequest.onBeforeRequest.addListener(
  function (details) {
    // do something here

  },
  {
    urls: [
      "https://yourhost.com/api/path",
    ],
    types: ["xmlhttprequest"],
  }
);

相关问题