Chrome扩展程序:URL权限不起作用

时间:2019-01-31 23:16:36

标签: javascript google-chrome google-chrome-extension chrome-webrequest

我们正在使用chrome webrequest API来根据请求拦截和修改标头。 在使用Chrome 72之前,我一直可以正常工作,但是现在无法正常工作了。但是,当我用function add(x: string, y: string): string; function add(x: number, y: number): number; function add(x: any, y: any): any { return x + y; } const t1: string = add(10, 1); // Type 'number' is not assignable to type 'string'. const t2: number = add(10, 1); // OK const t3: string = add('10', '1'); // OK const t4: number = add('10', 1); // Argument of type '"10"' is not assignable to parameter of type 'number'. 替换权限时,就可以了。 另外,我尝试使用另一个域Google(例如以下示例):https://developer.chrome.com/extensions/webRequest,但也无法正常工作。

您是否知道为什么该功能不再起作用? 目前,我们将使用"<all_urls>",但这并不是我们真正需要的巨大权限。

manifest.json:

"<all_urls>"

background.js

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

编辑:

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

manifest.json:

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

1 个答案:

答案 0 :(得分:0)

对于Chrome 72,您需要在权限中同时指定要拦截的目标URL和

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

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

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