Frage

Ich verstehe (ich denke), dass XMLHTTPREquest-Objekte die "gleichdomänen" -Richtlinie halten. Ich möchte jedoch eine einfache lokale HTML -Datei (POC) erstellen, die XML von einem Webserver herunterlädt und etwas damit tut (beginnen wir mit einem einfachen "alert ()").

Ist es überhaupt möglich? Benötige ich eine spezielle Firefox -Konfigurationsoption?

Der Server, von dem ich versuche, herunterzuladen nicht Unter meiner Kontrolle (es ist eigentlich eine Google -API).

Mein einfacher Versuch ist der Code von Mozilla's "use xmlhttprequest" -Seite ". Es gibt einen Fehler zurück, den ich aus der "Send" -Methode nicht wirklich verstehe.

Haftungsausschluss: Ich bin hauptsächlich ein C/C ++ - Entwickler - habe nie eine ernsthafte JS -Programmierung gemacht und nie versucht, diese APIs zu verwenden.

War es hilfreich?

Lösung

Xmlhttprequest hält sich tatsächlich an eine viel strengere Implementierung derselben Domänenrichtlinie: Während Sie das Dokument festlegen können.Domain-Eigenschaft, damit JavaScript von zwei Unterdomänen bedient werden kann, miteinander zu sprechen, können Sie dies mit XMLHTTPrequestObject nicht tun. In Ihrem Fall konnten Sie das auch nicht mit JavaScript tun.

Es gibt ein paar Optionen. Zunächst können Sie einen Reverse-Proxy verwenden, um den Anschein zu machen, dass die externe Site eine Unterdomäne Ihrer Website ist. Schauen Sie sich Apache's Mod_proxy an, insbesondere die Proxypassreverse

Eine andere Alternative besteht darin, Daten als JSON -Objekt zurückzugeben:u003Cscript src="foo"> can retrieve whatever data it wants from wherever it wants. Downside of this is that it's not (easily) repeatable (as in multiple requests from same page).

Ich empfehle Ihnen auch, Google für "Google Mashups" zu googeln. Die meisten davon leben in der Domäne "googleMashops.com", was die Implementierung erheblich erleichtert. Ein paar leben außerhalb dieser Domäne und können Ihnen einige Ideen geben.

Bearbeiten: Anstatt das XMLHTTPrequest-Objekt direkt zu verwenden, empfehle ich, eine Bibliothek von Drittanbietern wie Prototype.js zu durchlaufen

Andere Tipps

Wenn der XML, den Sie abrufen möchten, von einem der JS -APIs von Google zurückgegeben wird, ist es nicht erforderlich, dass XMLHTTPrequest erforderlich ist (da dies nur auf derselben Domain wie Ihre Seite Anway verwendet werden kann).

Bei Verwendung einer Google -API, wie z.

<script type="text/javascript" src="http://www.google.com/jsapi?key=your_google_api_key"></script>

Fügen Sie dann einen Verweis auf die spezifischen API (n) hinzu, die Sie auf Ihrer Seite verwenden möchten:

<script type="text/javascript">google.load("maps", "2");</script>

Jetzt können Sie die verschiedenen Funktionen aufrufen, die von dieser API bereitgestellt werden:

<script type="text/javascript">
  function initialize() {
    var map = new google.maps.Map2(document.getElementById("map"));
    map.setCenter(new google.maps.LatLng(41.86, 87.68), 13);
  }
  google.setOnLoadCallback(initialize);
</script>

No xmlhttprequest erforderlich :)

Mit JSONP können Sie dies tun. ich tue es hier Verwenden von JQuery und PHP. Grundsätzlich verwende ich den PHP -Proxy, um die JSON -Antwort zu wickeln, damit JQuery damit umgehen kann. Es ist unter BSD.

Alternativ versuchen Sie es mit IE8. Wenn Sie von der Festplatte ausgehen und keine Website IE8 ignoriert alle normalen Domänenbeschränkungen und erhalten die gewünschten Daten.

Mit JQuery (und vermutlich XHR, aber ich versuche, es nicht direkt zu verwenden) können Sie gerne Cross-Domänen-Anfragen stellen, vorausgesetzt, Sie geben keine ungewöhnlichen Header oder Nicht-Get-Methoden an. Wenn Sie diese verwenden möchten, müssen Sie die Kontrolle über den Server haben, um Optionsanforderungen zu aktivieren.

Sehen https://developer.mozilla.org/en/http_access_control für Details.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top