局域网中两台电脑 A、B:
症状:
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>
过程比较纠结,后来根据朋友提示,在机器 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)
既然是 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>