OpenLayers跨域问题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OpenLayers跨域问题的tomcat下的设置方法
使用OpenLayers访问WFS服务是存在跨域问题,必须使用设置代理的方法才能正常使用,设置方法如下。

1.打开OpenLayers\examples\ 目录,找到proxy.cgi文件,将其拷贝到网络应用的
\WEB-INF\cgi文件夹下
2.编辑proxy.cgi文件, 在allowedHosts数组段内添加远程地址如geoserver服务器页面是
192.168.0.4:8888/geoserver/那么就添加'192.168.0.4:8888'。

3.安装python27到默认的c:/Python27/目录下,经过测试python27可以正常使用,新版本无
法保证正常使用,如python33无法正常使用该代理。

4.在应用的web.xml文件内添加如下内容
<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:/Python27/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>
<!-- The mapping for the default servlet-->
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>/cgi/*</url-pattern>
</servlet-mapping>
5.修改Tomcat的Tomcat/conf/context.xml文件,将<Context>修改为<Context
privileged="true">
6.运行测试。

假设该应用部署为http://localhost:8080/map/。

浏览器上访问:
http://localhost:8080/map/cgi/proxy.cgi,正常情况下反馈的是OpenLayers的主页。

7.在js中使用代理。

在script开始的地方添加OpenLayers.ProxyHost = "cgi/proxy.cgi?url="
这句话。

使用该方法经过测试可以解决跨域访问问题,如将geoserver的预览图层页面代码保存下来,在script开始的地方添加OpenLayers.ProxyHost = "cgi/proxy.cgi?url=",部署该应用后即可测试,效果应该和原页面一致。

相关文档
最新文档