回答:
なぜProxyHostが必要なのですか?
JavaScriptのセキュリティ制限のため、XMLHttpRequestを介してリモートドメインから情報を取得することはできません。
WFSやGeoRSSなどのクラスは、XMLHTTPRequestを使用してデータを取得します。ユーザーがリモートサーバー(ページをホストしているマシン以外のもの)にクエリを実行している場合は、そのマシンのWebアクセス可能な場所にプロキシスクリプトをインストールする必要があります。独自のProxyHostを設定する方法については、以下を参照してください。
OpenLayers.ProxyHost変数が有効なプロキシホストに設定されていない場合、要求はリモートサーバーに直接送信されます。ほとんどの場合、結果はセキュリティ例外になりますが、この例外はしばしば黙って発生します。
お役に立てば幸いです...
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
配列を編集することを忘れないでください。
既存の回答はかなり古いですが、この質問は標準的な質問になり、他の多くは重複としてクローズされているため、徹底的な回答が必要だと感じています。これは、私がこのサイトに書いた他の回答に基づいて、この質問に答えようとする私の試みです。