我想为 openlayers 设置一个代理来使用,所以我按照以下步骤操作:
从 OpenLayers 网站下载 proxy.cgi 文件:http: //trac.osgeo.org/openlayers/browser/trunk/openlayers/examples/proxy.cgi
修改 proxy.cgi 文件以将我的域包含在 allowedHosts 列表中:
allowedHosts = ['localhost:6901']
将 proxy.cgi 文件复制到以下文件夹:
$TOMCAT_PATH$/webapps/yourApp/WEB-INF/cgi/
通过添加以下部分来修改 Web 应用程序的文件 web.xml。您可以在以下位置找到文件
$TOMCAT_PATH$/webapps/yourApp/WEB-INF/web.xml
注释:如果您的 webapp 不存在 web.xml 文件,只需自己创建或从另一个 webapp 复制并修改它。(创建!)
注释: “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>
通过添加以下元素来修改 Web 应用程序的文件 context.xml。您可以在以下位置找到文件
$TOMCAT_PATH$/webapps/yourApp/META-INF/context.xml
重启Tomcat
要将代理与 OpenLayers 一起使用,只需在代码中包含这一行:
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"] 有关,但我不知道它是如何相关的..