493 Stimmen

JQuery AJAX Kreuzdomain

Hier sind zwei Seiten, test.php und testserver.php.

test.php

    $(function() {
        $.ajax({url:"testserver.php",
            success:function() {
                alert("Erfolg");
            },
            error:function() {
                alert("Fehler");
            },
            dataType:"json",
            type:"get"
        }
    )})

testserver.php

Jetzt mein Problem: Wenn sich beide Dateien auf demselben Server befinden (entweder localhost oder Webserver), funktioniert es und alert("Erfolg") wird aufgerufen. Wenn sie auf verschiedenen Servern sind, also testserver.php auf dem Webserver und test.php auf localhost, funktioniert es nicht und alert("Fehler") wird ausgeführt. Selbst wenn die URL innerhalb des AJAX auf http://domain.example/path/to/file/testserver.php geändert wird.

38 Stimmen

Für Leute, die vorbeikommen. Lesen Sie dies, um eine Vorstellung davon zu bekommen, wie Cross-Domain-JavaScript-Aufrufe funktionieren stackoverflow.com/a/11736771/228656

1 Stimmen

Ich habe hier eine Antwort auf diese Frage geschrieben: Cross-Domain-HTML-Seite mit jQuery AJAX laden - die letzte, unterstützt https

10voto

Jason Punkte 2139

Es ist wahr, dass die Same-Origin-Richtlinie verhindert, dass JavaScript Anfragen über Domains hinweg stellt, aber die CORS-Spezifikation ermöglicht genau den API-Zugriff, den Sie suchen, und wird von der aktuellen Version der gängigen Browser unterstützt.

Sehen Sie, wie Sie Cross-Origin-Ressourcenaustausch für Client und Server aktivieren können:

http://enable-cors.org/

"Cross-Origin Resource Sharing (CORS) ist eine Spezifikation, die einen wirklich offenen Zugriff über Domain-Grenzen hinweg ermöglicht. Wenn Sie öffentliche Inhalte bereitstellen, erwägen Sie bitte die Verwendung von CORS, um sie für universellen JavaScript/Browser-Zugriff zu öffnen."

9voto

Paul Schreiber Punkte 12312

Dies ist möglich, aber Sie müssen JSONP verwenden, nicht JSON. Der Link von Stefan hat Sie in die richtige Richtung gewiesen. Die jQuery AJAX-Seite enthält weitere Informationen zu JSONP.

Remy Sharp hat ein detailliertes Beispiel mit PHP.

9voto

imilbaev Punkte 864

Ich verwende den Apache-Server, daher habe ich das Modul mod_proxy verwendet. Aktiviere die Module:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Füge dann hinzu:

ProxyPass /deine-proxy-url/ http://service-url:serviceport/

Füge schließlich die Proxy-URL zu deinem Skript hinzu.

7voto

Jacob Mattison Punkte 48729

Die Browsersicherheit verhindert das Ausführen eines Ajax-Aufrufs von einer auf einer anderen Domäne gehosteten Seite aus. Dies wird als "Same-Origin-Richtlinie" bezeichnet.

4voto

William Clemens Punkte 172

Von den Jquery-Dokumenten (link):

  • Aufgrund von Browser-Sicherheitsbeschränkungen unterliegen die meisten "Ajax"-Anfragen der same-origin-Policy; die Anfrage kann keine Daten erfolgreich von einer anderen Domain, Subdomain oder einem anderen Protokoll abrufen.

  • Script- und JSONP-Anfragen unterliegen nicht den Beschränkungen der same-origin-Policy.

Also nehme ich an, dass Sie jsonp für die Anfrage verwenden müssen. Aber ich habe es selbst nicht ausprobiert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X