Ich habe viele Beispiele zum Erstellen von XHR-Anfragen von Firefox-Add-ons gesehen, aber ich versuche, die neuen WebExtensions Sachen zu verwenden (wo require
und Components
sind undefined) und kann nicht zu sehen, warum Ich kann keine einfache XmlHttpRequest innerhalb der Erweiterung senden?XMLHttpRequest von Firefox WebExtension
Es ist erwähnenswert, dass die Ajax-Anfrage zu einer völlig anderen URL geht, aber der Host hat CORs gesetzt, um alle Ursprünge zuzulassen.
Sobald .send()
abgefeuert wird erhalte ich die Fehlermeldung:
[Exception... "Failure" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: resource://gre/modules/ExtensionContent.jsm -> moz-extension://9ca18411-9a95-4fda-8184-9dcd3448a41a/myapp.js :: GM_xmlhttpRequest :: line 162" data: no]"1 whatsapp.js:166:9
Der Code sieht wie folgt aus:
function GM_xmlhttpRequest(orders) {
try {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", function(a1, a2, a3) {
console.log('xhr.load: %s, %s, %s', a1, a2, a3);
});
// open synchronously
oReq.open(orders.method, orders.url, false);
// headers
for (var key in orders.headers) {
oReq.setRequestHeader(key, orders.headers[key]);
}
// send
var res = oReq.send(orders.data);
console.log('xhr result: %s', res);
} catch(e) {
debugger;
console.warn('could not send ajax request %s to %s, reason %s', orders.method, orders.url, e.toString());
}
}
ich webRequest Berechtigungen meiner manifest.json hinzugefügt haben, wird mir klar, dass ist es nicht, was es bedeutet, aber ich kämpfe um zu verstehen, was die Ajax-Anfrage stoppt? Irgendwelche Ideen?
{
"manifest_version": 2,
"name": "MyApp",
"version": "1.0",
"description": "TestXHR",
"icons": {
"48": "icons/myapp-48.png"
},
"applications": {
"gecko": {
"id": "[email protected]",
"strict_min_version": "45.0"
}
},
"content_scripts": [
{
"matches": ["*://web.myapp.com/*"],
"js": ["myapp.js"]
}
],
"permissions": [
"https://thehost.all-xhr-sent-here.net/*",
"webRequest"
]
}
Sie könnten [fetch] (https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch) versuchen. –
Das ist interessant. XHR sollte von jeder Webseite funktionieren, solange Sie es von background.js oder popup.js machen, würde ich denken. – Noitidart
Funktioniert auch von innerhalb der Web-Erweiterung, es hatte etwas mit der Berechtigung URL selbst zu tun – tommed