Manifest V3 更新
我找到了一种方法来实现这个。但请务必非常小心地进行url过滤和其他安全保护措施。
在 Manifest v3 中,您可以设置规则来修改进出站调用。在清单的一个新部分 "host_permissions"
中包含您正在请求的站点名称。您可以在此处查看如何在清单中实现规则:
https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#manifest
有一个名为 "allowAllRequests"
的规则动作,使用此规则可以让您进行跨域请求,绕过预检查。您可以在此处阅读更多关于规则的内容:
https://developer.chrome.com/docs/extensions/reference/declarativeNetRequest/#type-RuleActionType
要使用此规则,您需要在 "condition"
中包含 "resourceTypes"
密钥,并提供值 "main_frame"
或 "sub_frame"
同时,请确保完全卸载您的扩展程序并重新安装它,以便使这些更改生效。
谷歌的示例清单:
{
"name": "My extension",
...
"declarative_net_request" : {
"rule_resources" : [{
"id": "ruleset_1",
"enabled": true,
"path": "rules_1.json"
}, {
"id": "ruleset_2",
"enabled": false,
"path": "rules_2.json"
}]
},
"permissions": [
"declarativeNetRequest",
"declarativeNetRequestFeedback",
"*://example.com/*"
],
"host_permissions": [
"http://www.blogger.com/",
"*://*/*"
],
...
}
示例 Rule.json:
[
{
"id": 1,
"priority": 1,
"action": { "type": "allowAllRequests" },
"condition": {
"urlFilter": "again make sure you are very specific with this.",
"resourceTypes": ["main_frame"]
}
}
]
<script>
)的一种方式。CORS 则是服务器允许被阻止的事物(即跨域 Ajax)的一种方式。 - apsillers