1

openlayers が使用するプロキシをセットアップしたいので、次の手順に従いました。

  1. OpenLayers Web サイトから proxy.cgi ファイルをダウンロードしました: http://trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi

  2. proxy.cgi ファイルを変更して、自分のドメインを allowedHosts リストに含めます。

    allowedHosts = ['localhost:6901']

  3. proxy.cgi ファイルを次のフォルダーにコピーします。

    $TOMCAT_PATH$/webapps/yourApp/WEB-INF/cgi/

  4. 以下のセクションを追加して、Web アプリのファイル web.xml を変更します。ファイルは次の場所にあります。

    $TOMCAT_PATH$/webapps/yourApp/WEB-INF/web.xml

コメント: Web アプリケーション用の web.xml ファイルが存在しない場合は、自分で作成するか、別の Web アプリケーションからコピーして変更します。(作成した!)

コメント:「executable」パラメーターの「param-value」には、Python インストールへのパスが含まれている必要があります。(します!)

<servlet> 
      <servlet-name>cgi</servlet-name> 
      <servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class> 
    <init-param> 
      <param-name>debug</param-name> 
      <param-value>0</param-value> 
    </init-param> 
    <init-param> 
      <param-name>cgiPathPrefix</param-name> 
      <param-value>WEB-INF/cgi</param-value> 
    </init-param> 
    <init-param> 
      <param-name>executable</param-name> 
      <param-value>c:\python25\python.exe</param-value> 
    </init-param> 
    <init-param> 
      <param-name>passShellEnvironment</param-name> 
      <param-value>true</param-value> 
    </init-param> 
    <load-on-startup>5</load-on-startup> 
  </servlet> 

  <servlet-mapping> 
    <servlet-name>cgi</servlet-name> 
    <url-pattern>/cgi-bin/*</url-pattern> 
  </servlet-mapping>
  1. 以下の要素を追加して、Web アプリのファイル context.xml を変更します。ファイルは次の場所にあります。$TOMCAT_PATH$/webapps/yourApp/META-INF/context.xml

  2. Tomcat を再起動する

  3. OpenLayers でプロキシを使用するには、コードに次の 1 行を含めるだけです。

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

しかし、次のように使用しようとすると:

/webappname/cgi-bin/proxy.cgi?url=labs.metacarta.com

次のエラーが表示されます。

Some unexpected error occurred. Error text was: list index out of range

os.environ["REQUEST_METHOD"] に関連していると思いますが、どのように関連しているかはわかりません..

4

3 に答える 3

1

あなたが提出している:

/webappname/cgi-bin/proxy.cgi?url=labs.metacarta.com

しかし、proxy.cgiスクリプトはこれを行おうとしています。

host = url.split("/")[2]

URLにhttp://labs.metacarta.comを試して、proxy.cgiにいくつかのスラッシュを分割するか、URLを少し賢く解析するように変更してください。

于 2012-09-11T21:55:50.587 に答える
1

定義されていない環境変数を求めています。

例外をキャッチして処理するか、次を使用する必要がありますos.environ.get

try:
    methodq = os.environ["REQUEST_METHOD"]
except KeyError:
    methodq = "default value"

または:

methodq = os.environ.get("REQUEST_METHOD", "default value")
于 2012-08-05T13:49:01.647 に答える