OpenLayers2でプロキシを使用する必要があるのはいつですか?


8

openlayersでプロキシを使用する必要があるのはいつですか?私はこれについて多くの読書をしましたが、決定的な答えを見つけることができないようです。これが私の問題のルートかどうか疑問に思います。

たとえば、ポート8080でGeoserver(WFS)を実行しているサーバーが1つあり、ポート80でApache(OpenLayersを提供)を実行している場合、プロキシを使用する必要がありますか?

サーバーが物理的に分離されている場合、プロキシを使用する必要がありますか?

回答:


8

Webページの提供元とは異なるマシンやポートにAJAXリクエストを送信する場合は、プロキシが必要です。

したがって、上記の両方の例で、WMS getfeatureinfo要求またはあらゆる種類のWFS要求を行う場合は、(Webページを提供しているサーバー上に)プロキシが必要になります。ただし、単純なWMS getMapリクエストにはプロキシは必要ありません。


ありがとう-理にかなっています。プロキシ設定をいじくります!
user8262 '19年

3

plsはここを読んでください

なぜProxyHostが必要なのですか?

JavaScriptのセキュリティ制限のため、XMLHttpRequestを介してリモートドメインから情報を取得することはできません。

WFSやGeoRSSなどのクラスは、XMLHTTPRequestを使用してデータを取得します。ユーザーがリモートサーバー(ページをホストしているマシン以外のもの)にクエリを実行している場合は、そのマシンのWebアクセス可能な場所にプロキシスクリプトをインストールする必要があります。独自のProxyHostを設定する方法については、以下を参照してください。

OpenLayers.ProxyHost変数が有効なプロキシホストに設定されていない場合、要求はリモートサーバーに直接送信されます。ほとんどの場合、結果はセキュリティ例外になりますが、この例外はしばしば黙って発生します。

お役に立てば幸いです...


2

JavaScriptが最初に開発されたとき、JavaScriptがそれほど広く使用されるとは考えられていなかったため、その開発中に多くの仮定が行われ、今日問題となっています。

Microsoft XMLHttpRequestがInternet Explorerブラウザでを設計したとき、それは大きな制限付きで設計されました。

XMLHttpRequestあなたが直接、別のサーバに要求を行うことはできません。同じマシンで2つのサーバーが実行されていても、ポートが異なるとこの制限があります。

あなたがする必要があるのは、あなたのApache Webサーバー(ポート80)にCGIプロキシを置き、OpenLayers.ProxyHostを使用してそれをポイントすることです。

OpenLayersサイトには、この問題に関するFAQ回答があります

なぜProxyHostが必要なのですか?

JavaScriptのセキュリティ制限のため、XMLHttpRequestを介してリモートドメインから情報を取得することはできません。

WFSやGeoRSSなどのクラスは、XMLHTTPRequestを使用してデータを取得します。ユーザーがリモートサーバー(ページをホストしているマシン以外のもの)にクエリを実行している場合は、そのマシンのWebアクセス可能な場所にプロキシスクリプトをインストールする必要があります。独自のProxyHostを設定する方法については、以下を参照してください。

OpenLayers.ProxyHost変数が有効なプロキシホストに設定されていない場合、要求はリモートサーバーに直接送信されます。ほとんどの場合、結果はセキュリティ例外になりますが、この例外はしばしば黙って発生します。ProxyHostを設定するにはどうすればよいですか?

プロキシホストスクリプトの例は、こちらから入手できます 。trunk/ openlayers / examples / proxy.cgi

標準のApache設定では、proxy.cgiを/ usr / lib / cgi-bin /ディレクトリに配置します。

プロキシホストスクリプトがインストールされたら、OpenLayers.ProxyHost変数を編集して、そのURLに一致させる必要があります。

上記の標準のApache構成を考えます。

OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";

あなたがこのようなことをしたなら、あなたは訪問することができるはずです:

 http://YourDomain.example.com/cgi-bin/proxy.cgi

そのページで生成されるコンテンツは、openlayers.org Webサイトである必要があります。

代わりに404エラーが発生する場合は、プロキシスクリプトが適切な場所にないか、ウェブサーバーが正しく設定されていません。

プロキシファイルをサーバーにコピーしたら、allowedHosts配列を編集することを忘れないでください。


既存の回答はかなり古いですが、この質問は標準的な質問になり、他の多くは重複としてクローズされているため、徹底的な回答が必要だと感じています。これは、私がこのサイトに書いた他の回答に基づいて、この質問に答えようとする私の試みです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.