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?

3voto

Hohes Level.... Sie müssen ein CNAME-Setup auf Ihrem Server haben, damit other-serve.your-server.com auf other-server.com verweist.

Ihre Seite erstellt dynamisch ein unsichtbares iframe, das als Transport zu other-server.com fungiert. Dann müssen Sie über JS von Ihrer Seite aus mit other-server.com kommunizieren und Rückrufe haben, die die Daten zurück auf Ihre Seite bringen.

Möglich, erfordert jedoch Koordination von your-server.com und other-server.com

3voto

Ivan Durst Punkte 1122

Ich weiß, dass dies eine alte Frage ist, aber ich wollte meinen Ansatz teilen. Ich benutze cURL als Proxy, sehr einfach und konsistent. Erstellen Sie eine PHP-Seite namens submit.php und fügen Sie den folgenden Code hinzu:

`Dann in Ihrem JS (hier jQuery):

$.ajax({
type: 'POST',
url: 'submit.php',
crossDomain: true,
data: '{"some":"json"}',
dataType: 'json',
success: function(responseData, textStatus, jqXHR) {
    var value = responseData.someKey;
},
error: function (responseData, textStatus, errorThrown) {
    alert('POST fehlgeschlagen.');
}
});`

3voto

Roman Dolgiy Punkte 1461

Ich denke, der beste Weg ist die Verwendung von XMLHttpRequest (z.B. $.ajax(), $.post() in jQuery) mit einem der Cross-Origin Resource Sharing Polyfills https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills#wiki-CORS

2voto

dlongley Punkte 2068

Dies ist eine alte Frage, aber einige neue Technologien könnten jemandem helfen.

Wenn Sie administrative Zugriffsrechte auf den anderen Server haben, können Sie das Opensource Forge-Projekt nutzen, um Ihren Cross-Domain-POST zu erledigen. Forge bietet eine Cross-Domain-JavaScript XmlHttpRequest-Umgebung, die von Flashs raw Socket-API profitiert. Der POST kann sogar über TLS erfolgen.

Der Grund, warum Sie administrative Zugriffsrechte auf den Server benötigen, an den Sie POSTen, ist, dass Sie eine Cross-Domain-Richtlinie bereitstellen müssen, die den Zugriff von Ihrer Domain erlaubt.

http://github.com/digitalbazaar/forge

1voto

Guillaume86 Punkte 14161

Es sollte möglich sein mit einer YQL-Custom-Tabelle + JS XHR, schau mal hier: http://developer.yahoo.com/yql/guide/index.html

Ich benutze es, um etwas Client-seitiges (js) HTML-Scraping zu machen, funktioniert gut (Ich habe einen kompletten Audioplayer, mit Suche im Internet/Playlists/Lyrics/Last.fm Informationen, alles clientseitig js + YQL)

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