Wann muss ich einen Proxy mit OpenLayers2 verwenden?

8

Wann genau muss ich einen Proxy mit Openlayern verwenden? Ich habe viel darüber gelesen, kann aber keine endgültige Antwort finden. Ich frage mich, ob dies der Weg meiner Probleme ist.

Wenn beispielsweise ein Server Geoserver (WFS) auf Port 8080 und Apache (OpenLayers bedienend) auf Port 80 ausführen, muss ich dann einen Proxy verwenden?

Wenn die Server physisch getrennt sind, muss ich dann einen Proxy verwenden?

user8262
quelle

Antworten:

8

Sie benötigen einen Proxy, wenn Sie eine AJAX-Anfrage an einen Computer und / oder Port stellen, der sich von dem unterscheidet, von dem aus Ihre Webseite bereitgestellt wurde.

In beiden obigen Beispielen benötigen Sie einen Proxy (auf dem Server, der die Webseite bedient), wenn Sie WMS-getfeatureinfo-Anforderungen oder irgendeine Art von WFS-Anforderung stellen möchten. Für einfache WMS-getMap-Anforderungen benötigen Sie jedoch keinen Proxy.

Ian Turton
quelle
Danke - das macht Sinn. Ich werde mit dem Proxy-Setup herumspielen!
user8262
3

Bitte lesen Sie hier .

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.

ich hoffe es hilft dir ...

Aragon
quelle
2

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 XMLHttpRequestin seinem Internet Explorer-Browser entwarf, wurde es mit einer großen Einschränkung entworfen.

Das XMLHttpRequesterlaubt 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 allowedHostsArray 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.

Devdatta Tengshe
quelle