Proxy OpenLayers地理服务器跨源问题

Proxy OpenLayers地理服务器跨源问题,proxy,cross-domain,gis,openlayers,geoserver,Proxy,Cross Domain,Gis,Openlayers,Geoserver,我正在尝试从基于openlayers的应用程序向GeoServer发出WMS GetFeatureInfo请求。 但我正在讨论跨源问题,因为它知道我的源是http:localhost 希望有人能帮我这里是我的设置 我已将geoserver安装在IP为x.x.x.x的windows服务器上,可通过端口8080访问该服务器。 我在IIS 7.5中本地安装了openlayers应用程序,并使用 http://localhost/Application/Application.html 在GeoSer

我正在尝试从基于openlayers的应用程序向GeoServer发出WMS GetFeatureInfo请求。 但我正在讨论跨源问题,因为它知道我的源是http:localhost

希望有人能帮我这里是我的设置

我已将geoserver安装在IP为x.x.x.x的windows服务器上,可通过端口8080访问该服务器。 我在IIS 7.5中本地安装了openlayers应用程序,并使用

http://localhost/Application/Application.html
在GeoServer服务器上,我配置了以下内容

GeoServer是作为GeoSuite v2.2的一部分安装的,它使用Jetty web服务。 已安装GeoServer代理扩展。()

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

在openlayers应用程序中,我设置代理服务器设置如下

OpenLayers.ProxyServer = "http://x.x.x.x:8080/geoserver/rest/proxy?url="
这仍然不起作用,我仍然得到跨来源的问题。我没有设置地理服务器 工作区基础代理Url,因为我不确定它是否相关。我需要设置这个吗?如果是的话,是为了什么

如果有人已经解决了这个问题,请让我知道


感谢所有的帮助

如上所述,您需要在IIS中创建代理。你如何做到这一点可能会有很大的不同,有很多方法可以做到这一点。为了简单起见,这里有一个预构建的代理。如果你需要的话,用谷歌搜索更多应该很容易。他们一毛钱一打


好消息是Geoserver2.3Beta版包含了对GetFeatureInfo请求的JSONP支持。如果你对检查出血边缘没意见,这是一条路。您将不再需要代理。

对我来说,我使用PHP Curl作为代理,不需要太多配置,只需要一页PHP Curl,然后就可以了,没有繁琐的设置。;)

问候,, Nas

只需设置为用户从外部使用的内容,因此所有从geoserver交付的生成内容都应仅提供使用此基础的链接,从而避免跨源问题

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


(对于prod安装,它可能类似于
https://example.com/geoserver
http://...
如果您不想在外部保护它)

两个注意事项:如果可能,从Jetty运行OpenLayers应用程序,您就不会有跨域问题。如果你必须从IIS运行它,你也必须在IIS上设置代理,而不是在Jetty上。你知道怎么做吗。你有例子吗。这将是一个很大的帮助