¿Cómo envío una solicitud HTTP desde una extensión de Chrome?

2 minutos de lectura

Avatar de usuario de Mirianna
Mirianna

Estoy trabajando en una extensión de Chrome que envía una solicitud HTTP.

como lo mando a www.example.com con el parámetro par con valor 0?

https://www.example.com?par=0

(el servidor lee el parámetro par y hace algo)

Encontré este artículo, hablando de XMLHttpRequest de origen cruzadopero no sé cómo podría ayudarme su ejemplo.

Avatar de usuario de Marco Bonelli
marco bonelli

En primer lugar, deberá editar su manifest.json y agregue el permiso para www.example.com:

  • para el nuevo Manifiesto V3utilizar el host_permissions campo:

    {
        "manifest_version": 3,
        ...
        "host_permissions": [
            "https://www.example.com/*"
        ],
        ...
    }
    
  • Si todavía está usando el antiguo Manifiesto V2, use el permissions campo:

    {
        "manifest_version": 2,
        ...
        "permissions": [
            "https://www.example.com/*"
        ],
        ...
    }
    

Luego, en su página de fondo (o en otro lugar) puede hacer:

fetch('http://www.example.com?par=0').then(r => r.text()).then(result => {
    // Result now contains the response text, do what you want...
})

Ver también documento de MDN para fetch().


Versión obsoleta usando XMLHttpRequest (ES5):

function callback() {
    if (xhr.readyState === XMLHttpRequest.DONE) {
        if (xhr.status === 200) {
            result = xhr.responseText;
            // ...
        }
    }
};

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://www.example.com?par=0", true);
xhr.onreadystatechange = callback;
xhr.send();

NOTA la advertencia en la parte superior del pariente página de documentación:

En Manifiesto V3, XMLHttpRequest no se admite en las páginas de fondo (proporcionadas por Service Workers). Considere usar su reemplazo moderno, fetch()

  • Solo como nota: si está en una página https y está solicitando una URL http, es posible que obtenga un Mixed Content: The page at '...' error.

    – Serguei Fiódorov

    10 de abril de 2015 a las 14:57

  • ¿Puedo agregar un patrón en lugar de un dominio específico?

    – Adrián B.

    24 de agosto de 2015 a las 11:09

  • Sí puedes, usando * comodines. Sin embargo, si desea permitir el acceso a través de https y http, deberá agregarlo por separado. Leer desarrollador.chrome.com/extensions/xhr

    – Nino van Hooff

    29 de agosto de 2015 a las 22:09


  • stackoverflow.com/questions/34627921/…, stackoverflow.com/questions/11506687/…

    – franco r

    14 de agosto de 2017 a las 4:05

  • Recibí un error CORB al intentar llamar fetch de mi script de contenido (agregando URL externa a permissions matriz no resuelve el problema). La siguiente respuesta resolvió mi problema, que consistía en delegar la llamada de recuperación a una secuencia de comandos en segundo plano y enviar el análisis de la respuesta en la secuencia de comandos de contenido como se pretendía originalmente. stackoverflow.com/questions/55214828/…

    –Michael Yaworski

    31 de mayo de 2019 a las 3:31


¿Ha sido útil esta solución?