首页 > 解决方案 > Chrome 扩展程序:URL 权限不起作用

问题描述

我们正在使用 chrome webrequest API 来拦截和修改请求的标头。在 Chrome 72 之前我工作得很好,但它不再工作了。但是当我用它替换权限时"<all_urls>"。另外,我尝试了另一个域,谷歌,比如这个例子:https ://developer.chrome.com/extensions/webRequest ,但它也不起作用。

你知道为什么它不再起作用了吗?我们将暂时使用"<all_urls>",但这是我们并不真正需要的巨大许可。

清单.json:

"permissions": [
 "webRequest",
 "webRequestBlocking",
 "*://*.merchantos.com/*"
 ]

背景.js

  chrome.webRequest.onHeadersReceived.addListener(
    details => ({
      responseHeaders: filter(details.responseHeaders),
    }),
    { urls: ['*://*.merchantos.com/*'] },
    ['blocking', 'responseHeaders']
  )

编辑 :

问题解决了。对于 Chrome 72,您现在需要将请求的主机添加到您的权限中才能编辑标头。

清单.json:

"permissions": [
 "webRequest",
 "webRequestBlocking",
 "*://*.merchantos.com/*",
 "*://*.mywebsite.coom/*/,
 ]

标签: javascriptgoogle-chromegoogle-chrome-extensionchrome-webrequest

解决方案


使用 Chrome 72,您需要在权限中指定要拦截的目标 URL,以及从中发出请求的网站 URL。

例如:https://www.mywebsite.com/发出https://abc.merchantos.com要拦截的请求。因此:

  • mywebsite.com 正在发出请求
  • abc.merchantos.com 是您要拦截的目标
  • 您必须在您的 : 中指定这两个 URL manifest.json

    {
        ...
        "permissions": [
            "webRequest", 
            "webRequestBlocking",
            "*://*.mywebsite.com/*", 
            "*://*.merchantos.com/*"
        ],
        ...
    }
    

推荐阅读