JavaScript Cross-Origin-Anfrage blockiert

Chrisel

Cadet 4th Year
Registriert
Sep. 2010
Beiträge
70
Hallo alle zusammen,
Ich habe folgendes Problem. Ich habe eine URL von der ich gerne das Format JSON lesen möchte. Tippe ich diese URL in die Browseradressleiste ein kommt der Text des JSON-Dokuments. Wenn ich nun per AJAX oder XMLHttpRequest-Object in Javascript versuche diesen Text in mein Programm zu laden kommt der Fehler
Cross-Origin-Anfrage blockiert: Die Same-Origin-Regel verbietet, die externe Ressource auf zu lesen. Dies kann gelöst werden,...ann. Irgendwelche Ideen? Viele Grüße Chrisel
 
Dann rufe halt per Ajax eine PHP Datei auf, die dir dieses JSON runterlädt und dann das JSON als Rückgabewert gibt.
Anders geht es sonst nicht.

Außerdem ist das keine Meldung von Firefox, sondern von dem Addon NoScript.
 
Wie bereits gesagt ist es standardmäßig verboten, per Javascript einen xmlhttprequest an einen anderen Host zu schicken.
Wenn du Kontrolle über die Webseite hast, in der das Javascript ausgeführt wird, dann kannst du diese Sicherheitsmaßnahme umgehen indem du einen bestimmten http-Header namens "Access-Control-Allow-Origin" mit deiner remote-Domain mitschickst. Dann sollte der xmlhttprequest problemlos funktionieren. Weiteres dazu kannst du hier nachlesen:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
 
Ah ok:) Also hab jetzt ein php Dokument geschrieben das das erledigt, aber wundert mich ja doch das es nicht ohne irgendwelche "normalen" maßnahmen geht. JSONP wäre eine Lösung das stimmt. Habe da auch schon ein Beispiel ausprobiert, allerdings habe ich keinen Einfluss drauf was mir die URL liefert, ich bin quasi nur derjenige der das zeug mittels Javascript auswertet, und nur weil ich keine callback funktion davor stehen habe funktioniert es schon nicht. Aber Danke für die schnelle Antwort!:)
 
Du verstehst hoffentlich schon, dass das eine wahnsinnige XSS-Sicherheitslücke wäre, wenn man einfach einen xmlHttpRequest an eine x-beliebige Domain stellen könnte. Angenommen, jemand schafft es folgenden Code in eine Seite zu injizieren, die sensible Benutzerdaten (Kontodaten etc.) enthält:

Code:
window.onload = function() {
    kontonummer = document.getElementById("Kontonummer");
    // anderer Code

    // Sende xmlHttpRequest an evildomain.com mit POST-Inhalt Kontonummer etc.
};

Dann hat plötzlich der Angreifer die Kontodaten vom XSS-Opfer. Deshalb sollte das auf keinen Fall möglich sein, es sei denn der Betreiber der Seite hat dies ausdrücklich erlaubt, entweder per HTTP-Header oder per jsonp.
 
Zurück
Oben