Javascript 地理服务器,OpenLayers3 GetFeatureInfo跨站点(不同的方法)

Javascript 地理服务器,OpenLayers3 GetFeatureInfo跨站点(不同的方法),javascript,apache,iis,openlayers-3,geoserver,Javascript,Apache,Iis,Openlayers 3,Geoserver,我认为我们都熟悉跨站点问题,但以防万一: 我在端口8080上使用OpenLayers3、GeoServer和端口80上使用Apache。我在地图上渲染了一些特征,点击我想从WMS获取特征信息。我在OpenLayers3示例中找到了代码: var viewResolution = v.getResolution(); var url = wmsSource.getGetFeatureInfoUrl( evt.coordinate, viewResolution, viewProjection, {

我认为我们都熟悉跨站点问题,但以防万一: 我在端口8080上使用OpenLayers3、GeoServer和端口80上使用Apache。我在地图上渲染了一些特征,点击我想从WMS获取特征信息。我在OpenLayers3示例中找到了代码:

var viewResolution = v.getResolution();
var url = wmsSource.getGetFeatureInfoUrl(
evt.coordinate, viewResolution, viewProjection,
{'INFO_FORMAT': 'application/json'});
if (url) 
  $.get(url, null, function(data)
  {
  });
当然,我得到:XMLHttpRequest无法加载localhost:8080/geoserver/Re。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“localhost”

我在网上搜索,找到了处理这件事的不同方法。我在问我该怎么选择。已知的事实是:托管服务器将被拥有,linux或windows未知(目前)。这也意味着我不知道是否会使用apache或IIS,所以让我们保持打开状态

我发现的选项有:

  • 科尔斯
  • JSONP
  • apache上的代理
  • URL重写IIS 7
如果在apache或IIS上托管网站,我应该选择什么?我不是在寻找简单的方法,我在寻找正确的方法。

再见, 我认为你有两个主要的选择:

  • 对GetFeatureInfo使用JSONP OutputFormat
  • 使用代理(具有一定的保护)
  • 我相信1作为一个解决方案是干净的,如果您正在开发一个特定的应用程序,并且您知道您总是使用GeoServer或支持JSONP的东西,那么它实际上更适合IMHO。它避免了对代理和最终管理员的干扰

    在一般情况下,2更灵活,尽管我建议以某种方式限制人们使用这种代理所能做的事情,以避免在您的基础设施中出现黑洞。 在我们的webgis(基于OL)中,我们使用我们开发的这个非常精简的工具,可以配置为只允许传递某些请求(例如getfeatureinfo),并且在需要时只允许传递给某些服务器


    我的0.02€。

    我不是Apache大师,但如果我理解正确:ProxyPass/geoserver ProxyPassReverse/geoserver这两行会暴露一些风险吗?