【问题标题】:OpenLayers GeoServer Cross Origin IssueOpenLayers GeoServer 跨域问题
【发布时间】:2013-02-01 09:31:24
【问题描述】:

我正在尝试从基于 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 文件中配置为允许匿名身份验证。 在代理配置中我允许本地主机

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

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

这仍然不起作用,我仍然遇到跨源问题。我没有设置地理服务器 工作区基本代理网址,因为我不确定它是否相关。我需要设置这个吗?如果是的话怎么办?

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

感谢所有帮助。

【问题讨论】:

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

标签: proxy cross-domain gis openlayers geoserver


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    问候, 纳斯

    【讨论】:

      【解决方案3】:

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

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

      (对于 prod 安装,如果您不想在外面保护它,它可能应该是 https://example.com/geoserverhttp://...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-29
        • 2017-08-15
        • 2012-03-12
        • 2012-12-11
        相关资源
        最近更新 更多