web-dev-qa-db-fra.com

CORS - Tomcat - Geoserver

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!

23
user1680784

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).

36
jgrocha

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>
4
stvn

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

0
Jason Advincula