3

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

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

我在 IP xxxx 的 Windows 服务器上安装了地理服务器,它通过端口 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 文件中配置为允许匿名身份验证。在代理配置中,我允许 localhost

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

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

这仍然不起作用,我仍然遇到跨源问题。我没有设置 geoserver 工作区 Base Proxy Url,因为我不确定它是否相关。我需要设置这个吗?如果是的话怎么办?

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

感谢所有帮助。

4

3 回答 3

0

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

好消息是 GeoServer 2.3 beta 包含对 GetFeatureInfo 请求的 JSONP 支持。 http://blog.geoserver.org/2013/01/29/geoserver-2-3-beta-released/如果您可以检查最新的前沿,这就是要走的路。您将不再需要代理。

于 2013-02-21T23:18:12.880 回答
0

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

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

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

于 2020-01-29T08:39:58.073 回答
-1

对我来说,我使用 PHP Curl 作为代理,不需要配置太多,只是一个 PHP Curl 页面,然后一切顺利,无需繁琐的设置。;)

问候,纳斯

于 2013-03-12T14:18:46.183 回答