我正在尝试从基于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,因为我不确定它是否相关。我需要设置吗?如果是这样的话?
如果有人解决了这个问题,请告诉我
感谢所有帮助。
答案 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/geoserver
或http://...
)
答案 2 :(得分:-1)
对我来说,我正在使用PHP Curl充当代理,配置不多,只是一个PHP Curl页面,然后一切顺利,没有繁琐的设置。 ;)
此致 NAS