我正在制作一个扩展程序,将用户提供的脚本注入到当前网站中。我已经完成了这部分工作(在 wOxxOm 的帮助下)。唯一的问题是,在某些网站上它无法工作。控制台会抛出以下错误:
rule1.json
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'
。我一直在尝试使用 declarativeNetRequest 来修复这个问题,但它没有起作用。rule1.json
[
{
"id": 1,
"priority": 1,
"action": {
"type": "modifyHeaders",
"responseHeaders": [
{
"header": "content-security-policy",
"operation": "remove"
}
]
},
"condition": {
"urlFilter": "*://*/*",
"resourceTypes": ["main_frame"]
}
}
]
manifest.json
{
...
"permissions": ["scripting", "activeTab", "declarativeNetRequest"],
...
"declarative_net_request": {
"rule_resources": [
{
"id": "ruleset_1",
"enabled": true,
"path": "/rules/rule1.json"
}
]
}
}
Javascript
let button = document.getElementById("run");
button.addEventListener("click", async () => {
let input = document.getElementById("script");
let script = input.value;
await execInPage(script);
});
async function execInPage(code) {
const [tab] = await chrome.tabs.query({ currentWindow: true, active: true });
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: (code) => {
const el = document.createElement("script");
el.textContent = code;
document.head.appendChild(el);
},
args: [code],
world: "MAIN",
});
}
我正在使用Manifest V3版本。 该扩展还没有发布,目前正在使用开发者模式。
"<all_urls>"
,要么是其他扩展程序干扰了它,或者这是Chrome的一个bug。 - wOxxOm