我有一个流行的 Chrome 扩展程序,但在使用 CSP 的网站上失败。
该扩展根据用户配置的一些设置丰富了我的用户访问的网站上的内容。
在具有 CSP 策略的站点上,执行 JS 时出现以下错误:
This document requires 'TrustedScriptURL' assignment
如何在这些网站上运行我的扩展 - 我可以使用该网站的 CSP f.ex,还是不好的做法?
总比没有好。在 MV3 中,Chrome 提供了一个 declarativeNetRequest API,允许您更改请求标头(响应和请求)。更多 - declarativeNetRequest。例如,此规则对传入请求完全禁用 CSP(删除 CSP 标头):
//manifest.json
...
"permissions": [
"declarativeNetRequest",
"declarativeNetRequestWithHostAccess",
"declarativeNetRequestFeedback",
"scripting",
"activeTab"
],
"declarative_net_request": {
"rule_resources": [
{
"id": "ruleset_1",
"enabled": true,
"path": "rules.json"
}
]
}
...
//rules.json
[
{
"id": 1,
"priority": 1,
"action": {
"type": "modifyHeaders",
"responseHeaders": [
{"header": "Content-Security-Policy", "operation": "remove"}
]
},
"condition": {
"urlFilter": "|http*",
"resourceTypes": ["script", "main_frame", "sub_frame"]
}
}
]
也许你可以试试这个
<meta
http-equiv="Content-Security-Policy"
content=" default-src 'self' http://* https://*;
connect-src 'self' http://* https://*;
img-src 'self' http://* https://*;"
/>