/ / same origin policy error beim Erstellen der Karte - Javascript, same-origin-policy

Fehler bei der Ursprungsrichtlinie beim Erstellen von Karten - Javascript, derselben Ursprungsrichtlinie

Ich habe versucht, den folgenden Code auszuführen, der mit OpenLayers eine Karte erstellt. Der Code ist ein Beispiel aus der GeoServer Einsteigerhandbuch.

Der Code erstellt eine Karte und fügt ein paar Ebenen hinzu. Der clientseitige Code (unten) wird aus dem lokalen Dateisystem geladen und die Layer-Daten werden von Geoserver heruntergeladen, der lokal auf Post 8080 ausgeführt wird.

Der Code soll eine Karte erstellen und ein paar Ebenen hinzufügen. Die zweite Schicht wird von der hinzugefügt addGeoRSS Funktion. Die erste Ebene wurde erfolgreich hinzugefügt, das Hinzufügen der zweiten Ebene schlägt jedoch mit dem folgenden Fehler fehl

Übergreifende Ursprungsanforderung blockiert: Die Richtlinie "Gleiche Herkunft" verbietet das Lesen der Remote-Ressource unter 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. Dies kann behoben werden, indem Sie die Ressource in dieselbe Domäne verschieben oder CORS aktivieren.

Angesichts der Tatsache, dass beide Ebenen vom selben Host heruntergeladen werden, würde ich erwarten, dass beide fehlschlagen. Warum verursacht nur die zweite Ebene Probleme?

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);
}

Antworten:

2 für die Antwort № 1

Ihre erste Ebenenanfrage ist für ein Bild (.png) und Bilder unterliegen keinen CORS-Beschränkungen. Der Grund für den CORS-Fehler bleibt jedoch die Tatsache, dass Sie Client-Code mit laden file:// und dann versuchen, eine (Nicht-Bild-) Ressource mit zu laden http://