[置顶] 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>

你可能感兴趣的:([置顶] GeoServer + Openscales 的跨域问题)