Cross-Origin XHR von einem Benutzer-Skript in Google Chrome
-
20-09-2019 - |
Frage
Hat jemand etwas Glück von Quer Herkunft XHRs von einem Benutzer-Skript in Google Chrome hat? Die Anträge gehen durch an den Server (ich kann sie in den Protokollen sehen), aber wird das readystatechanged
Ereignis nie ausgelöst.
Erweiterung Berechtigungen scheinen nicht, den Trick zu tun. Weder ist JSONP.
Lösung
Aktuelle Versionen von Chrome (13.0.781 oder höher) unterstützen nun die meisten oder alle der GM_xmlhttpRequest()
Doc Funktionalität -. einschließlich Cross-Domain-Anfragen
Siehe Ausgabe 18857: Unterstützung Cross-Site-XMLHttpRequest in Content-Skripte .
Also das Skript funktioniert völlig in Ordnung, jetzt auf Chrome (und Firefox, natürlich):
// ==UserScript==
// @name _Cross domain (XSS) GM_xmlhttpRequest, Chrome too
// @include http://stackoverflow.com/*
// @grant GM_xmlhttpRequest
// ==/UserScript==
GM_xmlhttpRequest ( {
method: "GET",
url: "http://www.google.com/",
onload: function (response) {
console.log ( response.status,
response.responseText.substring (0, 80)
);
}
} );
(Installieren Sie das Skript, dann browse jede SO Seite. Das Skript wird die ersten 80 Zeichen der Google-Startseite auf die Konsole schreiben.)
Andere Tipps
Ab Chrome 13 können Sie in Content Scripts Quer Herkunft Anfragen tun, wenn Sie die Berechtigung auf die Website im Manifest enthalten.
Ein Benutzer Skript in Chrome ist ein Content-Skript. Content-Skripte können nicht Cross-Origin XHRs machen. Wenn Sie Cross-Origin XHRs tun wollen, sollte es in den Erweiterungsseite (Hintergrund, Pop-up, Optionen) durchgeführt werden.
Für weitere Informationen: http://code.google.com/chrome/extensions/content_scripts.html http://code.google.com/chrome/extensions/xhr.html