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

4voto

BillyTom Punkte 2231

Es gibt wenige Beispiele für die Verwendung von JSONP, die Fehlerbehandlung einschließen.

Bitte beachten Sie jedoch, dass das Fehlerereignis nicht ausgelöst wird, wenn JSONP verwendet wird! Siehe: http://api.jquery.com/jQuery.ajax/ oder jQuery-Ajax-Anforderung mit JSONP-Fehler

3voto

Ali_Hr Punkte 3257

Ich kenne 3 Möglichkeiten, um Ihr Problem zu lösen:

  1. Erstens, wenn Sie Zugriff auf beide Domains haben, können Sie den Zugriff für alle anderen Domains mit folgendem Code erlauben:

    header("Access-Control-Allow-Origin: *");

    oder nur für eine Domain, indem Sie den folgenden Code zur .htaccess-Datei hinzufügen:

    SetEnvIf Origin "http(s)?://(www\.)?(google.com|staging.google.com|development.google.com|otherdomain.net|dev02.otherdomain.net)$" AccessControlAllowOrigin=$0 Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin

  2. Sie können eine Ajax-Anfrage an eine PHP-Datei auf Ihrem Server stellen und Anfragen an eine andere Domain über diese PHP-Datei verarbeiten.

  3. Sie können JSONP verwenden, da dafür keine Berechtigung erforderlich ist. Hierzu können Sie die Antwort unseres Freundes @BGerrissen lesen.

1voto

Sergio Abreu Punkte 2326

Es hat in PHP funktioniert, indem ich einfach Folgendes zur Seite hinzugefügt habe, die bereitgestellt wurde:

header("Access-Control-Allow-Origin: *");
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');

PS: Ich habe meine eigene XHR-Suite namens sa_ajax mit praktischen und nützlichen Methoden erstellt. (https://github.com/osergioabreu/sa_ajax/)

0voto

Josh Schultz Punkte 817

Für Microsoft Azure ist es etwas anders.

Azure hat eine spezielle CORS-Einstellung, die vorgenommen werden muss. Im Grunde genommen handelt es sich um dasselbe Prinzip, aber nur das Einstellen des Header joshuarh wird nicht funktionieren. Die Azure-Dokumentation zum Aktivieren von Cross-Domain finden Sie hier:

https://learn.microsoft.com/de-de/azure/app-service-api/app-service-api-cors-consume-javascript

Ich habe eine Weile damit herumgespielt, bevor ich bemerkt habe, dass meine Hosting-Plattform diese spezielle Einstellung hat.

0voto

Es funktioniert, alles was du brauchst:

PHP:

header('Access-Control-Allow-Origin: http://www.example.com');
header("Access-Control-Allow-Credentials: true");
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');

JS (jQuery ajax):

var getWBody = $.ajax({ cache: false,
        url: URL,
        dataType : 'json',
        type: 'GET',
        xhrFields: { withCredentials: true }
});

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