OpenLayers 3を使用すると、このメッセージが表示されなくなります。
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.
これはコードです:
// 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
});
私はcrossOrigin設定を次のように設定しようとしました:
crossOrigin: null
crossOrigin: 'null'
crossOrigin: 'anonymous'
ズームイン/ズームアウトコントロールしか表示されませんが、レイヤーがレンダリングされません。
以下のサイモンのオプション3を使用しました。必要なjetty-servlets jarファイルをコピーして\ WEB-INF \ web.xmlで有効にすることにより、GeoServerでCORSを有効にしました。
<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>
それを行った後、ページを再度テストしたところ、同じエラーが発生しました。
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.
まだ何かが足りないようです。OpenLayers側から何かする必要がありますか?
私はJettyを取り除き、GeoServerを完全にアンインストールすることになりました。問題は、ジオサーバーのWindowsインストーラーをインストールすると、4年前のバージョンのjettyがインストールされることです。(Jettyバージョン6.1.8)CORSのjarファイルをコピーしたにもかかわらず、Jetty 7以降でのみサポートされています。
WARファイルをインストールできることがわかりました。TomServerを使用することにしました。これは、GeoServerのWebサイトにあるこのメモに従って、GeoServerが主にテストされているためです。
注GeoServerは主にTomcatを使用してテストされているため、これらの手順は他のコンテナーアプリケーションでは機能しない可能性があります。
WARファイルのインストール手順は次のとおりです。
http://docs.geoserver.org/stable/en/user/installation/war.html
これも素晴らしいハウツービデオです:
https://www.youtube.com/watch?v=YEOA8WWWVCw
インストールが完了したら、CORSを有効にします。