我想设置一个代理供 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
评论:如果您的 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>
通过添加以下元素来修改 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"] 有关,但我不知道它是如何相关的..
最佳答案
您请求的环境变量未定义。
您需要捕获并处理异常或使用os.environ.get
:
try:
methodq = os.environ["REQUEST_METHOD"]
except KeyError:
methodq = "default value"
或者:
methodq = os.environ.get("REQUEST_METHOD", "default value")
关于python - 在 Tomcat 上安装 CGI 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11816910/