616 Stimmen

Wie sende ich eine Cross-Domain-POST-Anfrage über JavaScript?

Wie sende ich via JavaScript eine POST-Anfrage über verschiedene Domains hinweg?

Hinweise - die Seite sollte nicht neu geladen werden und ich muss die Antwort danach abrufen und analysieren.

0 Stimmen

Ich würde gerne ein wenig über den Anwendungsfall erfahren, der es Ihnen ermöglicht, dies zu versuchen. Könnten Sie bitte etwas darüber erzählen?

0 Stimmen

Grundsätzlich arbeite ich an einem Skript, das Text aus einer HTML-Datei an einen anderen Server zur Verarbeitung senden muss.

3 Stimmen

Kannst du einen Proxy einrichten, der dies auf der Serverseite ausführt und deinem Skript nur das Ergebnis liefert? Oder muss es zu 100% JavaScript sein?

1voto

Jelly Punkte 377

CORS ist für dich. CORS steht für "Cross Origin Resource Sharing" und ist eine Möglichkeit, Cross-Domain-Anfragen zu senden. Sowohl das XMLHttpRequest2 als auch die Fetch API unterstützen CORS, und sie können sowohl POST- als auch GET-Anfragen senden.

Aber es hat seine Grenzen. Der Server muss den Access-Control-Allow-Origin spezifisch angeben, und er darf nicht auf '*' gesetzt werden.

Und wenn du möchtest, dass jede Ursprung eine Anfrage an dich senden kann, benötigst du JSONP (es muss auch Access-Control-Allow-Origin festgelegt werden, kann aber '*').

Für viele Anfrage-Wege, wenn du nicht weißt, wie du wählen sollst, denke ich, dass du eine voll funktionsfähige Komponente benötigst, um das zu tun. Lass mich eine einfache Komponente vorstellen https://github.com/Joker-Jelly/catta


Wenn du einen modernen Browser verwendest (> IE9, Chrome, FF, Edge, usw.), empfehle ich dir sehr, eine einfache aber schöne Komponente zu verwenden https://github.com/Joker-Jelly/catta. Es hat keine Abhängigkeiten, weniger als 3KB, und es unterstützt Fetch, AJAX und JSONP mit der gleichen tödlichen Beispiel-Syntax und Optionen.

catta('./data/simple.json').then(function (res) {
  console.log(res);
});

Es unterstützt auch alle Wege, um es in dein Projekt zu importieren, wie ES6-Modul, CommonJS und sogar </code> in HTML.</p></x-turndown>

1voto

Raj Malakpet Punkte 31

Wenn Sie Zugriff auf den Cross-Domain-Server haben und keine Änderungen am Servercode vornehmen möchten, können Sie eine Bibliothek namens - 'xdomain' verwenden.

Wie es funktioniert:

Schritt 1: Server 1: Fügen Sie die xdomain-Bibliothek ein und konfigurieren Sie den Cross-Domain als Slave:

Schritt 2: Auf dem Cross-Domain-Server erstellen Sie eine proxy.html-Datei und nehmen Server 1 als Master auf:

proxy.html:

  xdomain.masters({
    "https://server1" : '*'
  });

Schritt 3:

Jetzt können Sie einen AJAX-Aufruf an die proxy.html als Endpunkt von Server1 machen. Dies umgeht die CORS-Anfrage. Die Bibliothek verwendet intern eine iframe-Lösung, die mit Berechtigungen und allen möglichen Methoden funktioniert: GET, POST usw.

Abfrage-AJAX-Code:

$.ajax({
        url: 'https://crossdomain_server/proxy.html',
        type: "POST",
        data: JSON.stringify(_data),
        dataType: "json",
        contentType: "application/json; charset=utf-8"
    })
    .done(_success)
    .fail(_failed)

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