Saltar al contenido

Cómo evitar el bloqueo de lectura de origen cruzado (CORB) en una extensión web de Chrome

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *