Tout, j'essaye d'obtenir CORS activé sur Tomcat 7.0.52 pour Geoserver.
J'ai modifié web.xml dans conf dans Tomcat, comme spécifié dans http://Tomcat.Apache.org/Tomcat-7.0-doc/config/filter.html#CORS_Filter
Mais cela n'a pas aidé à définir les origines croisées dans l'en-tête. Je l'ai même essayé pour geoserver web-inf/web.xml qui n'a pas aidé.
Toutes les suggestions sont appréciées.
Merci!
Je dois faire de même pour éviter l'utilisation d'un proxy dans OpenLayers.
Depuis que j'utilise Ubuntu 12.04, j'ai installé Tomcat 7.0.55, au lieu du 7.0.26 par défaut (installé à partir des packages).
Pour ajouter des en-têtes CORS, j'ai simplement ajouté à $CATALINA_HOME/conf/web.xml
les lignes suivantes:
<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>
puis redémarrez Tomcat.
Par exemple, lorsque j'essaye de récupérer du Geoserver l'URL http://development.localhost.lan/geoserver/wfs
à partir de mon application exécutée sur http://localhost:3000
J'obtiens les en-têtes suivants:
En-têtes demandés:
POST /geoserver/wfs HTTP/1.1
Host: development.localhost.lan
Origin: http://localhost:3000
X-Requested-With: XMLHttpRequest
(...)
En-têtes de réponse:
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
Cela a fonctionné avec Chrome (Ver. 35.0.1916.153) et Firefox (Ver. 31.0).
J'ai dû ajouter ce qui suit au CorsFilter pour m'assurer que la demande de contrôle en amont 'OPTIONS' était autorisée
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
Hey Guys Après avoir ajouté ce script dans 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>
veuillez changer l'URL dans votre ajax comme ceci
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 }}'}
});
alors ça ira. je promets