创建地图时的原始政策错误相同

时间:2015-01-25 18:38:15

标签: javascript same-origin-policy

我尝试运行下面的代码,使用OpenLayers创建地图。代码是GeoServer Beginner's Guide

中的一个示例

代码创建一个地图并为其添加几个图层。客户端代码(如下)从本地文件系统加载,层数据从Geoserver下载,在8080之后本地运行。

代码应该创建一个地图并添加几个图层。第二层由addGeoRSS函数添加。第一层成功添加,但添加第二层失败,出现以下错误

  

阻止跨源请求:同源策略禁止在http://localhost:8080/geoserver/tiger/wms?service=WMS&version=1.1.0&request=GetMap&layers=tiger:poi&styles=&bbox=-74.0118315772888,40.70754683896324,-74.00153046439813,40.719885123828675&width=427&height=512&srs=EPSG:4326&format=application%2Frss%2Bxml读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。

鉴于这两个层都是从同一个主机下载的,我希望它们都失败,为什么只有第二个层会导致问题呢?

var GEOSERVERBASE = "http://localhost:8080";
var CountyLayer = 'tiger:tl_2011_us_county';
var map;

function mapinitialize() {

    map = new OpenLayers.Map('map', {
        maxResolution:'auto',
        projection: 'EPSG:4326'
    });
    layer = new OpenLayers.Layer.WMS(
        CountyLayer, GEOSERVERBASE + "/geoserver/tiger/wms",
        {
            layers: CountyLayer,
            format: 'image/png'
        }
    );

    // first (successful) request to Geoserver running at http://localhost:8080
    map.addLayer(layer);
    map.zoomTo(9);
    map.panTo(new OpenLayers.LonLat(-73.99, 40.75)); 

    // second request to Geoserver that causes a CORS error
    addGeoRSS();
}

function addGeoRSS() {

    var value = GEOSERVERBASE + '/geoserver/tiger/wms?service=WMS&version=1.1.0&request=GetMap&layers=tiger:poi&styles=&bbox=-74.0118315772888,40.70754683896324,-74.00153046439813,40.719885123828675&width=427&height=512&srs=EPSG:4326&format=application%2Frss%2Bxml';
    var georss = new OpenLayers.Layer.GeoRSS('Tiger POI', value);
    map.addLayer(georss);
}

1 个答案:

答案 0 :(得分:2)

您的第一个图层请求是针对图片(.png),图片不受CORS限制。但是,出现CORS错误的原因仍然是您使用file://加载客户端代码,然后尝试使用http://加载(非图像)资源