Frage

Wenn Sie eine XMLHTTPRequest in Javascript verwenden, möchte ich es zu einer externen Website senden, anstatt der, in dem die JS-Datei gehostet wird. So senden Sie es auf dem aktuellen Server test.php, würde ich verwenden

request.open("POST", "test.php", true);

aber für die zweite arguemnt, wie kann ich es auf eine andere Website senden. „Example.com/test.php“ sucht nach einer Datei auf dem aktuellen Server und „ http: // Beispiel. com / test.php “justseems geradezu zum scheitern verurteilt.

War es hilfreich?

Lösung

Sie können aus Sicherheitsgründen nicht. Sehen Sie die Same Origin Policy für JavaScript.

Es gibt einige Problemumgehungen, die Browser-Bugs oder Eckfällen ausnutzen, aber nicht mit ihnen empfohlen wird.

Der beste Ansatz einen serverseitigen Proxy hat, die Ajax-Anfragen empfängt und sendet wiederum HTTP-Anfragen an andere Server. Dies sollte sorgfältig durchgeführt wird durch Eingabe Hygienisierung und Whitelisting die Arten von Anforderungen, die gesendet werden, und die Server, die in Kontakt gebracht werden.

Andere Tipps

Das klingt wie ein schlechter Fall von Same Origin Policy , mein Freund:)

Sie kann nicht (zum größten Teil) verwendet XmlHttpRequest Daten von einer externen Website. Was Sie tun können, ist jedoch dynamisch erstellen einen SCRIPT-Tag und verweist auf eine externe Adresse. jQuery diese funktionell als Teil seiner Ajax Handhabung hüllt.

Tatsächlich Sie können. Nicht in jedem Browser obwohl.

Im Internet Explorer 8.0 gibt es XDomainRequest , ein Objekt Cross-Domain-Anforderungen ermöglicht. Sie müßten ordnungsgemäß Anfrage mit diesem Objekt auf dem Server durch das Senden Access-Control-Allow-Origin-Header zuerst mit „*“ oder Anforderer Domain-Namen.

gemacht Griff

Da Sie einige Hacky Dinge sowieso tun, warum nicht versuchen, es zuerst auf IE8 zu benutzen?

Wenn Sie die Kontrolle über den Server haben, können Sie diesen Header in der HTTP-Antwort verwenden kann, obwohl es nicht mit allen Browsern funktionieren kann.

Access-Control-Allow-Origin: *
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top