Menggunakan OpenLayers 3, saya tidak bisa menghapus pesan ini:
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.
Ini kodenya:
// 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
});
Saya telah mencoba mengatur pengaturan crossOrigin ke:
crossOrigin: null
crossOrigin: 'null'
crossOrigin: 'anonymous'
Saya hanya melihat kontrol zoom in / out tetapi layer tersebut tidak ditampilkan.
Saya pergi dengan opsi 3 simon di bawah ini. Saya mengaktifkan CORS di GeoServer dengan menyalin file jar jetty-servlets yang diperlukan dan mengaktifkannya di \ WEB-INF \ web.xml:
<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>
Setelah saya melakukannya, saya menguji halaman itu lagi dan menerima kesalahan yang sama:
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.
Sepertinya saya masih kehilangan sesuatu. Apakah saya harus melakukan sesuatu dari Sisi OpenLayers?
Saya akhirnya menyingkirkan Jetty dan mencopot GeoServer sepenuhnya. Masalahnya adalah ketika Anda menginstal installer windows geoserver, itu menginstal versi dermaga yang berusia 4 tahun! (Jetty versi 6.1.8) Meskipun saya telah menyalin file jar untuk CORS, itu hanya didukung di Jetty 7+.
Saya menemukan bahwa Anda dapat menginstal file PERANG. Saya memutuskan untuk menggunakan Tomcat karena itulah yang sebagian besar diuji oleh GeoServer berdasarkan catatan ini dari situs web GeoServer:
Catatan GeoServer sebagian besar telah diuji menggunakan Tomcat, dan karena itu instruksi ini mungkin tidak berfungsi dengan aplikasi kontainer lainnya.
Ini adalah instruksi untuk menginstal file WAR:
http://docs.geoserver.org/stable/en/user/installation/war.html
Ini juga cara video yang bagus:
https://www.youtube.com/watch?v=YEOA8WWWVCw
Setelah Anda selesai menginstal, Anda kemudian mengaktifkan CORS: