Solución:
Vea este número presentado por el cofundador de Moesif.
https://bugs.chromium.org/p/chromium/issues https://bugs.chromium.org/p/chromium/issues/detail?id=933893
Basado en su discusión con los ingenieros de Chronium, básicamente, debería agregar extraHeaders
en opciones adicionales para cuando se agregan oyentes, lo que acercará este disparador a la red e inyectará los encabezados antes de que se active CORB.
chrome.webRequest.onHeadersReceived.addListener(details => {
const responseHeaders = details.responseHeaders.map(item => {
if (item.name.toLowerCase() === 'access-control-allow-origin') {
item.value="*"
}
})
return { responseHeaders };
}, {urls: ['<all_urls>']}, ['blocking', 'responseHeaders', 'extraHeaders'])
Por cierto, un poco de autopromoción aquí. ¿Por qué no usa nuestra herramienta CORS?
https://chrome.google.com/webstore/detail/moesif-orign-cors-changer/digfbfaphojjndkpccljibejjbppifbc?hl=en
Ya es la herramienta CORS con más funciones.
Encontré la respuesta en los documentos de Google:
Evite las recuperaciones de origen cruzado en los scripts de contenido
Secuencia de comandos de contenido antiguo, realizando una búsqueda de origen cruzado:
var itemId = 12345;
var url = "https://another-site.com/price-query?itemId=" +
encodeURIComponent(request.itemId);
fetch(url)
.then(response => response.text())
.then(text => parsePrice(text))
.then(price => ...)
.catch(error => ...)
Nuevo script de contenido, pidiendo a su página de fondo que recupere los datos en su lugar:
chrome.runtime.sendMessage(
{contentScriptQuery: "queryPrice", itemId: 12345},
price => ...);
Nueva página de fondo de extensión, obteniendo de una URL conocida y transmitiendo datos:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.contentScriptQuery == "queryPrice") {
var url = "https://another-site.com/price-query?itemId=" +
encodeURIComponent(request.itemId);
fetch(url)
.then(response => response.text())
.then(text => parsePrice(text))
.then(price => sendResponse(price))
.catch(error => ...)
return true; // Will respond asynchronously.
}
});
https://www.chromium.org/Home/chromium-security/extension-content-script-fetches