GeoServer + Openscales 的跨域问题
目录
1.问题描述
局域网中两台电脑 A、B:
- A —— geoserver 2.0.2 port:8080 IP:192.168.0.226
- B —— geoserver 2.2.2 port:8090 IP:192.168.1.89
症状:
- 在 A 中使用openscales 2.2 可以正常访问 A 和 B 中的 Geoserver 服务,
- 而在 B 中使用openscales 2.2却访问不了 A 和 B 中的 Geoserver 服务,但能够访问 openscales 2.2 实例中 http://openscales.org/geoserver/wms 提供的服务
openscales 访问服务代码如下:
<Map id="fxMap" height="100%" width="100%" resolution="0.17578125" center="-74.011,40.710">
<WMS name="MyMap" url="http://192.168.0.226:8080/geoserver/wms"
layers="topp:states" format="image/png" version="1.1.0" styles="" />
<WMS name="MyMap" url="http://192.168.1.89:8090/geoserver/wms"
layers="china_wsps:MAINROAD" format="image/png" version="1.1.0" styles="" />
<DragHandler/>
<WheelHandler/>
<Zoom x="{fxMap.width-135}" y="10" />
</Map>
2.原因发现
过程比较纠结,后来根据朋友提示,在机器 B 中使用firebug 或 Google Chrome 开发人员工具查看网络请求状况,竟然发现是没找到跨域文件,访问本机的Geoserver服务怎么出现了跨域问题呀,彻底无语,截图如下:
详细信息如下:
Request URL:http://192.168.1.89:8090/crossdomain.xml
Request Method:GET
Status Code:404 Not Found (from cache)
Request Headers view source
Accept:*/*
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Connection:keep-alive
Host:192.168.1.89:8090
User-Agent:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Response Header sview source
Content-Length:1302
Content-Type:text/html; charset=iso-8859-1
Server:Jetty(6.1.8)
3.解决方法
既然是 Flex 跨域访问问题,那么就添加跨域文件吧。关键是 geoserver 网站的根目录的文件路径到底在哪呢,跨域文件到底放在什么地方。怎样才能使下面的地址能够访问到:
http://[GeoServerIP]:[PORT]/corssdomain.xml
在老外的网站上发现了解决办法:在Geoserver安装目录下找到 webapps 文件夹,在下面创建 root 文件夹,把跨域文件放在里面,重启Geoserver 就乐吧。
C:\Program Files\GeoServer 2.2.2\webapps\root\crossdomain.xml
文件内容如下:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
转载自:https://blog.csdn.net/mygisforum/article/details/8237677