すべて、私はCORSをGeocatのTomcat 7.0.52で有効にしようとしています。
http://Tomcat.Apache.org/Tomcat-7.0-doc/config/filter.html#CORS_Filter で指定されているように、Tomcatのconfでweb.xmlを変更しました
しかし、それはヘッダーにクロスオリジンを設定するのに役立ちませんでした。役に立たなかったgeoserver web-inf/web.xmlでも試してみました。
任意の提案をいただければ幸いです。
ありがとう!
OpenLayersでプロキシを使用しないようにするには、同じことをする必要があります。
Ubuntu 12.04を実行しているため、デフォルトの7.0.26(パッケージからインストール)ではなくTomcat 7.0.55をインストールしました。
CORSヘッダーを追加するには、単に$CATALINA_HOME/conf/web.xml
次の行:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.Apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
その後、Tomcatを再起動します。
たとえば、GeoserverからURL http://development.localhost.lan/geoserver/wfs
で実行しているアプリケーションからhttp://localhost:3000
次のヘッダーが表示されます。
リクエストされたヘッダー:
POST /geoserver/wfs HTTP/1.1
Host: development.localhost.lan
Origin: http://localhost:3000
X-Requested-With: XMLHttpRequest
(...)
応答ヘッダー:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin:http://localhost:3000
Connection:Keep-Alive
Content-Disposition:inline; filename=geoserver-GetFeature.text
Content-Encoding:gzip
Content-Length:469
Content-Type:text/xml; subtype=gml/3.1.1
Date:Tue, 29 Jul 2014 21:31:08 GMT
Keep-Alive:timeout=5, max=100
Server:Apache-Coyote/1.1
これはChrome(Ver。35.0.1916.153)およびFirefox(Ver。31.0)で動作しました。
プリフライトの「OPTIONS」リクエストが許可されていることを確認するために、CorsFilterに以下を追加する必要がありました
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
Hey Guysこのスクリプトを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>
<url-pattern>/*</url-pattern>
</filter-mapping>
このようにあなたのajaxのURLを変更してください
var boxsource = new ol.source.Vector({
//url: '{{ resource.ows_url|safe }}',
url: 'http://localhost:8080/geoserver/wfs?srsName=EPSG%3A4326&typename=cite:box&outputFormat=json&version=1.1.0&service=WFS&request=GetFeature',
format: new ol.format.GeoJSON(),
params: {'LAYERS': '{{ resource.typename }}'},
//STYLES:{'LAYERS': '{{ resource.typename }}'}
});
それは大丈夫です。約束します