Mit OpenLayers 3 kann ich diese Nachricht nicht zum Verschwinden bringen:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myserver:8085/geoserver/sf/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sf:view1&maxFeatures=1&outputFormat=JSON. This can be fixed by moving the resource to the same domain or enabling CORS.
Dies ist der Code:
// Ol3 only supports Projections "EPSG:4326" and "EPSG:3857". For every other projection you need proj4js
proj4.defs("EPSG:2236", "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs");
// Leases Layer
var myLayer = new ol.layer.Vector({
source: new ol.source.GeoJSON({
projection: 'EPSG:2236',
url: 'http://myserver:8085/geoserver/sf/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sf:view1&maxFeatures=1&outputFormat=JSON',
crossOrigin: null
})
});
// View
var view = new ol.View({
projection: 'EPSG:2236',
center: [0, 0],
zoom: 4
});
// Map
var map = new ol.Map({
target: 'map',
renderer: 'canvas',
layers: [myLayer],
view: view
});
Ich habe versucht, die crossOrigin-Einstellung auf Folgendes einzustellen:
crossOrigin: null
crossOrigin: 'null'
crossOrigin: 'anonymous'
Ich sehe nur die Vergrößerungs- / Verkleinerungssteuerung, aber die Ebene wird nicht gerendert.
Ich habe mich für Simons Option 3 entschieden. Ich habe CORS in GeoServer aktiviert, indem ich die erforderlichen Jetty-Servlets-JAR-Dateien kopiert und in der Datei \ WEB-INF \ web.xml aktiviert habe:
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
<init-param>
<param-name>allowedOrigins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedMethods</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>allowedHeaders</param-name>
<param-value>*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>cross-origin</filter-name>
<filter-pattern>/*</filter-pattern>
</filter-mapping>
Danach habe ich die Seite erneut getestet und den gleichen Fehler erhalten:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://myserver:8085/geoserver/sf/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sf:view1&maxFeatures=1&outputFormat=JSON. This can be fixed by moving the resource to the same domain or enabling CORS.
Sieht so aus, als würde mir noch etwas fehlen. Muss ich irgendetwas von der OpenLayers-Seite tun?
Am Ende habe ich Jetty losgeworden und GeoServer komplett deinstalliert. Das Problem ist, wenn Sie das Geoserver Windows-Installationsprogramm installieren, wird eine Version von Jetty installiert, die 4 Jahre alt ist! (Jetty Version 6.1.8) Obwohl ich die JAR-Dateien für CORS kopiert hatte, wird es nur in Jetty 7+ unterstützt.
Ich habe herausgefunden, dass Sie eine WAR-Datei installieren können. Ich habe mich für Tomcat entschieden, da GeoServer gemäß diesem Hinweis auf der GeoServer-Website hauptsächlich getestet wird:
Hinweis GeoServer wurde größtenteils mit Tomcat getestet. Daher funktionieren diese Anweisungen möglicherweise nicht mit anderen Containeranwendungen.
Dies sind die Anweisungen zum Installieren der WAR-Datei:
http://docs.geoserver.org/stable/en/user/installation/war.html
Dies ist auch ein schönes Video mit Anleitungen:
https://www.youtube.com/watch?v=YEOA8WWWVCw
Nachdem Sie die Installation abgeschlossen haben, aktivieren Sie CORS: