Wie sende ich eine HTTP-Anfrage von einer Chrome-Erweiterung?

Lesezeit: 2 Minuten

Miriannas Benutzeravatar
Mirianna

Ich arbeite an einer Chrome-Erweiterung, die eine HTTP-Anfrage sendet.

Wie sende ich es an www.example.com mit dem Parameter par mit Wert 0?

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

(Der Server liest den Parameter par und tut etwas)

Ich habe diesen Artikel gefunden, in dem ich darüber rede Cross-Origin XMLHttpRequestaber ich weiß nicht, wie mir ihr Beispiel helfen könnte.

Marco Bonellis Benutzeravatar
Marco Bonelli

Zuerst müssen Sie Ihre bearbeiten manifest.json und fügen Sie die Berechtigung für hinzu www.example.com:

  • Für das Neue Manifest V3verwenden Sie die host_permissions Feld:

    {
        "manifest_version": 3,
        ...
        "host_permissions": [
            "https://www.example.com/*"
        ],
        ...
    }
    
  • Wenn Sie noch das alte Manifest V2 verwenden, verwenden Sie das permissions Feld:

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

Dann können Sie auf Ihrer Hintergrundseite (oder anderswo) Folgendes tun:

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

Siehe auch MDN-Dokument für fetch().


Veraltete Version mit 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();

NOTIZ die Warnung oben im Verwandten Dokumentationsseite:

In Manifest V3, XMLHttpRequest wird in Hintergrundseiten (bereitgestellt von Service Workern) nicht unterstützt. Bitte erwägen Sie die Verwendung eines modernen Ersatzes. fetch()

  • Nur als Hinweis: Wenn Sie sich auf einer https-Seite befinden und eine http-URL anfordern, erhalten Sie möglicherweise eine Mixed Content: The page at '...' Fehler.

    – Serguej Fjodorow

    10. April 2015 um 14:57 Uhr

  • Kann ich anstelle einer bestimmten Domäne ein Muster hinzufügen?

    – Adrian B

    24. August 2015 um 11:09

  • Ja, das ist mit *-Platzhaltern möglich. Wenn Sie jedoch den Zugriff über https und http zulassen möchten, müssen Sie dies separat hinzufügen. Lesen Developer.chrome.com/extensions/xhr

    – Nino van Hooff

    29. August 2015 um 22:09


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

    – Frank R.

    14. August 2017 um 4:05

  • Beim Versuch, anzurufen, ist ein CORB-Fehler aufgetreten fetch aus meinem Inhaltsskript (Hinzufügen einer externen URL zu permissions Array löst das Problem nicht). Die folgende Antwort löste mein Problem, das darin bestand, den Fetch-Aufruf an ein Hintergrundskript zu delegieren und das Parsen der Antwort wie ursprünglich beabsichtigt an das Inhaltsskript zurückzusenden. stackoverflow.com/questions/55214828/…

    – Michael Yaworski

    31. Mai 2019 um 3:31


1453630cookie-checkWie sende ich eine HTTP-Anfrage von einer Chrome-Erweiterung?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy