谷歌插件V3版本解决跨域例子

3,026 阅读1分钟

官方文档有亿点点难懂,好不容易弄懂了,记录一下。chrome-extension-developer

谷歌插件开发时,需要请求接口,官方有推荐办法,都统一由 background.js 处理,但是这样对于我现有的项目改动太大。

我希望能够在某些请求返回时,统一修改请求头为 Access-Control-Allow-Origin: *

网上许多办法仍是 V2 版本的,V3 版本用declarativeNetRequest 取代了 webRequestBlocking,以下是栗子。

// manifest.json
"host_permissions": ["https://www.exmaple.com/*"],
"declarative_net_request": {
    "rule_resources": [{
        "id": "sample_rules",
        "enabled": true,
        "path": "sample_rules.json"
    }]
},
"permissions": ["declarativeNetRequest", "declarativeNetRequestFeedback"]

// sample_rules.json
[
  {
    "id": 1,
    "priority": 1,
    "condition": {
      "urlFilter": "*.exmaple.com/*",
      "resourceTypes": ["xmlhttprequest"]
    },
    "action": {
      "type": "modifyHeaders",
      "responseHeaders": [{
        "header": "Access-Control-Allow-Origin",
        "operation": "set",
        "value": "*"
      }]
    }
  }
]