我想我们都熟悉跨站点问题,但以防万一:我使用 OpenLayers3,端口 8080 上的 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 cannot load localhost:8080/geoserver/Re... 。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost' 不允许访问。
我在网上搜索并找到了不同的方法来处理这个问题。我在问我应该选择女巫的方式。已知的事实是:托管服务器将被拥有,Linux 或 Windows 未知(目前)。这也意味着我不知道是否会使用 apache 或 IIS,所以让我们保持打开状态。
我发现的选项是:
- CORS
- JSONP
- apache上的代理
- URL 重写 IIS 7
如果在 apache 或 IIS 上托管网站,我应该选择什么?我不是在寻找简单的方法,我在寻找正确的方法。