2

我们正在使用 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/*/,
 ]
4

1 回答 1

4

使用 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/*"
        ],
        ...
    }
    
于 2019-02-26T14:42:36.457 回答