Als JavaScript zum ersten Mal entwickelt wurde, war nicht vorstellbar, dass es eine so breite Verwendung finden würde, und daher wurden während seiner Entwicklung viele Annahmen getroffen, die heute problematisch geworden sind.
Als Microsoft das XMLHttpRequest
in seinem Internet Explorer-Browser entwarf, wurde es mit einer großen Einschränkung entworfen.
Das XMLHttpRequest
erlaubt Ihnen nicht direkt eine Anfrage an einen anderen Server zu machen. Sogar zwei Server, die auf demselben Computer ausgeführt werden, aber unterschiedliche Ports haben diese Einschränkung.
Sie müssen lediglich einen CGI-Proxy auf Ihrem Apache-Webserver (Port 80) haben und mit OpenLayers.ProxyHost darauf verweisen.
Auf der OpenLayers-Website finden Sie eine FAQ-Antwort zu diesem Problem :
Warum brauche ich einen ProxyHost?
Aufgrund von Sicherheitsbeschränkungen in Javascript ist es nicht möglich, Informationen von entfernten Domänen über eine XMLHttpRequest abzurufen.
Klassen wie WFS und GeoRSS verwenden XMLHTTPRequest, um ihre Daten abzurufen. Wenn sie einen Remote-Server abfragen (etwas anderes als den Computer, auf dem Ihre Seite gehostet wird), müssen Sie ein Proxy-Skript an einer Stelle installieren, auf die auf diesem Computer über das Internet zugegriffen werden kann. Im Folgenden erfahren Sie, wie Sie Ihren eigenen ProxyHost einrichten.
Wenn die Variable OpenLayers.ProxyHost nicht auf einen gültigen Proxy-Host festgelegt ist, werden Anforderungen direkt an die Remoteserver gesendet. In den meisten Fällen ist das Ergebnis eine Sicherheitsausnahme, obwohl diese Ausnahme häufig stillschweigend auftritt. Wie richte ich einen ProxyHost ein?
Ein Beispiel für ein Proxy-Host-Skript finden Sie hier:
trunk / openlayers / examples / proxy.cgi
Für die Standardkonfiguration von Apache würden Sie proxy.cgi in Ihrem Verzeichnis / usr / lib / cgi-bin / ablegen.
Sobald ein Proxy-Host-Skript installiert wurde, müssen Sie die Variable OpenLayers.ProxyHost so bearbeiten, dass sie mit dieser URL übereinstimmt.
Angesichts der oben genannten Standard-Apache-Konfiguration:
OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
Wenn Sie so etwas getan haben, sollten Sie in der Lage sein zu besuchen:
http://YourDomain.example.com/cgi-bin/proxy.cgi
Der resultierende Inhalt auf dieser Seite sollte die Website openlayers.org sein.
Wenn stattdessen ein 404-Fehler angezeigt wird, befindet sich entweder das Proxy-Skript nicht am richtigen Speicherort oder Ihr Webserver ist nicht richtig konfiguriert.
Vergessen Sie nicht, das allowedHosts
Array zu bearbeiten, nachdem Sie die Proxy-Datei auf Ihren Server kopiert haben .
Obwohl die vorhandenen Antworten ziemlich alt sind, denke ich, dass es eine erschöpfende Antwort geben muss, da diese Frage zu einer kanonischen Frage geworden ist und viele andere als Duplikat geschlossen werden. Dies ist mein Versuch, diese Frage zu beantworten, basierend auf anderen Antworten, die ich auf dieser Site geschrieben habe.