Frage

Wie umgehen Sie dieses Ajax-Cross-Site-Scripting-Problem unter FireFox 3?

War es hilfreich?

Lösung

Wenn Sie jQuery verwenden, verfügt es über eine Rückruffunktion, um dieses Problem zu beheben:

http://docs.jquery.com/Ajax/jQuery.ajax#options

Ab JQuery 1.2 können Sie JSON -Daten auf einer anderen Domäne laden, wenn Sie einen JSONP -Rückruf angeben, der wie SO erfolgen kann:„myurl?callback=?“.jQuery ersetzt automatisch das ?Wenn Sie den richtigen Methodennamen anzeigen, rufen Sie Ihren angegebenen Rückruf an.Wenn Sie den Datentyp auf "JSONP" festlegen, wird ein Rückruf automatisch Ihrer AJAX -Anfrage hinzugefügt.

Alternativ können Sie Ihre Ajax-Anfrage an ein serverseitiges Skript stellen, das den domänenübergreifenden Aufruf für Sie durchführt und die Daten dann an Ihr Skript zurückgibt

Andere Tipps

Um die Antwort zu aktualisieren (ich denke, hauptsächlich zu meinem Vorteil, wenn ich später nach dieser Antwort suche), können Sie beim Laden von XML oder etwas anderem den Benutzer jederzeit fragen, ob er uns erlaubt, mit diesem Code von einer anderen Site zu lesen :

try {
    if (netscape.security.PrivilegeManager.enablePrivilege)
        netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) { 
    alert("Sorry, browser security settings won't let this program run."); 
    return; 
}

(aus dem Buch „RESTful Web Services“) Dies funktioniert jedoch nur in Firefox, wenn die HTML-Datei aus einer lokalen Datei geladen wird.Also nicht so nützlich.

Noch eine Lösung:Wenn Sie nur die Header benötigen, können Sie „HEAD“ als Methode angeben. Dadurch wird das Sicherheitsproblem nicht ausgelöst.Zum Beispiel, wenn Sie nur wissen möchten, ob die Webseite existiert.

var client = new XMLHttpRequest();
client.open("HEAD", my_url, false);
client.send(null);
if(client.readyState != 4 || client.status != 200) //if we failed
    alert("can't open web page");

Ein paar weitere Details wären schön:Welche AJAX-Bibliothek verwenden Sie, was möchten Sie erreichen und wie machen Sie es?

Beispielsweise kann es sich um eine domänenübergreifende Ajax-Anfrage handeln, was nicht zulässig ist.In diesem Fall verwenden JSON.

Ich bin kürzlich auf dieses Problem gestoßen, und zwar während ich als AJAX die lokale Anfrage geladen habe, kein Cross-Site-Scripting-Problem.Auch Jimmy selbst scheint das gleiche Problem zu haben.Dies scheint das FF-Sicherheitsproblem zu sein, das in diesem Artikel beschrieben wird Ursache und Lösung für den Code „Zugriff auf eingeschränkte URI verweigert“:„1012-Problem.

Entschuldigung, habe diesen Fehler mit jQuery $ .ajax auf Firefox 3 erhalten.Versuchte JSONP -Vorschläge, aber ich denke, das wird nur mit etwas funktionieren, das JSON serviert.Ich versuche, ein lokales lokales HTML -Datei -basiertes Mashup zu erstellen, das Daten von Yahoo! Finance zieht, aber sie dienen .csv, also denke ich, ich bin Sol.– Jimmy Chandra (9. September um 17:20)

Ich hoffe, Sie finden es nützlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top