我正在尝试从一个基于openlayers的应用程序向GeoServer发出一个WMS GetFeatureInfo请求。但是我遇到了跨源问题,因为它知道我的源是http:localhost。
希望有人能帮我这是我的设置
我已经安装了geoserver在windows服务器上与IP x.x,它是通过端口8080访问。我在IIS 7.5中本地安装了我的openlayer应用程序,我使用以下命令引用它
http://localhost/Application/Application.html在GeoServer服务器上,我配置了以下内容
GeoServer是作为GeoSuite v2.2的一部分安装的,它使用Jetty web服务。已安装GeoServer代理扩展。(http://geoserver.org/display/GEOS/GeoServer+Proxy+Extension)。
我已经将rest代理设置为使用匿名身份验证。我必须在config.xml中执行此操作,因为此版本的GeoServer管理中存在一个错误,它会停止保存身份验证筛选器。我还确保在rest.properties文件中将其配置为允许匿名身份验证。在代理配置中,我允许localhost
在openlayer应用程序中,我按如下方式设置了代理服务器
OpenLayers.ProxyServer = "http://x.x.x.x:8080/geoserver/rest/proxy?url="这仍然不起作用,我仍然有跨来源的问题。我没有设置geoserver工作区基本代理Url,因为我不确定它是否相关。我需要设置这个吗?如果是这样的话会怎样呢?
如果有人解决了这个问题,请让我知道
感谢所有的帮助。
发布于 2013-02-22 07:18:13
如上所述,您需要在IIS中创建一个代理。如何做到这一点可能会有很大的不同,有很多方法可以做到。为了简单起见,这里有一个预先构建的代理。如果你需要的话,搜索更多应该是相当容易的。一毛钱一打。
好消息是JSONP2.3测试版包含了对GetFeatureInfo请求的GeoServer支持。http://blog.geoserver.org/2013/01/29/geoserver-2-3-beta-released/如果你不介意检查最新的技术,这就是你要走的路。您将不再需要代理。
发布于 2020-01-29 16:39:58
只需将Base Proxy URL设置为用户从外部使用的内容,因此从geoserver交付的所有生成的内容都应该只提供使用此基础的链接,从而避免跨源问题。
(在您的情况下,您可能是您的机器=>中唯一的(开发人员)用户,将其设置为http://localhost:8080/geoserver ...您还可以将其设置为您的计算机IP或DNS名称(如果您以这种方式访问它以进行测试)
(对于prod安装,如果您不想在外部保护它,它可能类似于https://example.com/geoserver或http://... )
发布于 2013-03-12 22:18:46
对我来说,我使用PHP Curl作为代理,不需要太多的配置,只需要PHP Curl的一个页面,然后一切都可以了,没有繁琐的设置。;)
致敬,Nas
https://stackoverflow.com/questions/14911113
复制相似问题