Сообщение от MallSerg
|
Что бы обойти эту проблему скрипт должен обращаться с запросами к расширению а уже расширение должно отправлять запросы к серверу в интернете
|
В общем получилось следующим образом. В манифесте:
"permissions": ["scripting", "activeTab", "storage", "webRequest"],
"host_permissions": ["*://*.site.com/*"],
"background": {
"service_worker": "scripts/service-worker.js"
},
В service-worker.js реализовал обработчик сообщений, суть в том, чтобы просто делать запросы куда просят:
chrome.runtime.onConnect.addListener(function(port) {
port.onMessage.addListener(function(request) {
if (port.name === "request") {
const url = request.url;
//console.log(url);
fetch(url).then((response) => {
let resp = {ok: response.ok}
if (response.ok) {
response.text().then((text) => {
resp.text = text;
port.postMessage(resp);
});
} else {
port.postMessage(resp);
}
});
}
});
});
В content_scripts вместо обычного fetch() отправляется сообщение в service_worker с запросом нужного url:
let fetchResponse = (response) => {
if (response.ok) {
console.log(response.text);
} else {
console.log('ERROR');
}
}
const port = chrome.runtime.connect({name: "request"});
port.postMessage({url: url});
port.onMessage.addListener(fetchResponse);
Работает.