OpenLayers GeoServer Cross Origin问题

时间:2013-02-16 14:02:26

标签: proxy cross-domain gis openlayers geoserver

我正在尝试从基于openlayers的应用程序向GeoServer发出WMS GetFeatureInfo请求。 但我知道我的起源是http:localhost。

希望有人可以帮助我,这是我的设置

我在带有IP x.x.x.x的Windows服务器上安装了geoserver,可以通过端口8080访问它。 我在IIS 7.5中本地安装了openlayers应用程序,我使用

引用它
http://localhost/Application/Application.html

在GeoServer服务器上,我配置了以下

GeoServer作为GeoSuite v2.2的一部分安装,它使用Jetty Web服务。 已安装GeoServer代理扩展。 (http://geoserver.org/display/GEOS/GeoServer+Proxy+Extension)。

我已将其余代理设置为使用匿名身份验证。我必须在config.xml中执行此操作,因为此版本的GeoServer管理中存在一个错误,该错误会停止保存身份验证过滤器。 我还确保在rest.properties中将fileit配置为允许匿名身份验证。 在代理配置中,我允许localhost

在openlayers应用程序中,我将Proxy Server设置设置如下

OpenLayers.ProxyServer = "http://x.x.x.x:8080/geoserver/rest/proxy?url="

这仍然不起作用,我仍然得到交叉原点问题。我没有设置地理服务器 workspace Base Proxy Url,因为我不确定它是否相关。我需要设置吗?如果是这样的话?

如果有人解决了这个问题,请告诉我

感谢所有帮助。

3 个答案:

答案 0 :(得分:0)

如上所述,您需要在IIS中创建代理。你如何做到这一点可以有很大的不同,有很多方法可以做到这一点。这是一个简单的预构建代理。如果你需要它,谷歌应该很容易。他们只差一打。

好消息是GeoServer 2.3测试版为GetFeatureInfo请求提供了JSONP支持。 http://blog.geoserver.org/2013/01/29/geoserver-2-3-beta-released/如果你可以查看前沿,这就是你要走的路。您将不再需要代理。

答案 1 :(得分:0)

只需将Base Proxy URL设置为用户从外部使用的那个,因此从geoserver传递的所有生成的内容应仅使用此库提供链接,从而避免了跨域问题。

(在您的情况下,您可能是计算机中唯一的( dev )用户=>将该用户设置为http://localhost:8080/geoserver ...也可以将其设置为计算机的IP或DNS名称,如果您以这种方式访问​​它进行测试)

(对于 prod 安装,如果您不希望在外部安装,则应该类似于https://example.com/geoserverhttp://...

答案 2 :(得分:-1)

对我来说,我正在使用PHP Curl充当代理,配置不多,只是一个PHP Curl页面,然后一切顺利,没有繁琐的设置。 ;)

此致 NAS