Политика безопасности контента версии 3 в манифесте расширения Chrome
Я пытаюсь загрузить (ввести) на страницу код javascript. Файл javascript является локальным по отношению к расширению. путь к файлу - js / somefile.js.
const basePath = chrome.runtime.getURL('');
fetch(chrome.runtime.getURL(filePath), { mode: 'same-origin' }) // <-- important
.then((_res) => _res.blob())
.then((_blob) => {
const reader = new FileReader();
reader.addEventListener('loadend', (data) => {
callback(data.currentTarget.result, basePath);
});
reader.readAsText(_blob);
});
const scriptTag = document.createElement('script');
scriptTag.innerHTML = scriptText;
scriptTag.type = 'text/javascript';
const scriptElement = document[injectLocation].appendChild(scriptTag);
if (removeImmediately) document[injectLocation].removeChild(scriptElement);
Мои доступные в Интернете ресурсы:
"web_accessible_resources": [{
"resources": [
"js/*.js",
],
"matches": ["<all_urls>"]
}],
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self'",
"sandbox": "sandbox allow-scripts; script-src 'self' 'https://apis.google.com/' 'https://www.gstatic.com/' 'https://*.firebaseio.com' 'https://www.googleapis.com' 'https://ajax.googleapis.com'; object-src 'self'"
},
Я получаю следующую ошибку:
Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-Wq/CW2mxkri68TjkuaA0+LnU0capVpyiEuSA5NOVNfU='), or a nonce ('nonce-...') is required to enable inline execution.
2 ответа
Вы можете устранить встроенную ошибку выполнения, изменив
Если вы хотите запускать сценарии с динамическими источниками, я думаю, этого можно достичь, если статический (уже доверенный) сценарий извлекает удаленный сценарий, а затем оценивает его.
Загрузите файлы сценария и поместите их в свой проект, чтобы сделать его локальным. Это решило мою проблему политики безопасности контента.