Je vais revenir sur une évolution en particulier, le filtre de Servlet CORS qui vient compléter un article que j'ai écrit il y a quelques temps sur cette norme du W3C. Pour rappel CORS Cross-origin resource sharing est une norme permettant de résoudre les problèmes des requêtes cross domain.
Les navigateurs implémentent cette norme en ajoutant des données dans les entêtes HTTP. En retour elles attendent que le serveur complète ces informations. Je vous avais proposer une implémentation simple d'un Filter pour pouvoir exposer vos services REST Jersey. Ce code n'est plus nécessaire si vous migrez aujourd'hui vers la dernière version de Tomcat.
Vous pouvez utiliser un filter qui interprétera les requêtes entrantes et sortantes.
<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> <init-param> <param-name>cors.allowed.methods</param-name> <param-value>GET,POST,PUT</param-value> </init-param> <init-param> <param-name>cors.allowed.headers</param-name> <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value> </init-param> <init-param> <param-name>cors.exposed.headers</param-name> <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value> </init-param> <init-param> <param-name>cors.support.credentials</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>CorsFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
Vous trouverez plus d'explications sur les différents paramètres sur http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter
Salut,
RépondreSupprimerMerci pour ton code mais quelles sont les dépendances Maven à ajouter au pom.xml poru que récupérer la classe en question?.
J'ai essayé çela mais ca ne marche pas :
org.apache.tomcat
tomcat-catalina
7.0.0
Je ne vois pas l'intérêt de charger la lib catalina par Maven car elle est intégrée à Tomcat dans le répertoire lib et la lib est nécessaire au chargement de la webapp dans Tomcat. Si jamais c'est important tu peux trouver sur le repo mavencentral des versions de la librairie catalina.jar http://search.maven.org/#search%7Cgav%7C1%7Cg%3A%22org.apache.geronimo.ext.tomcat%22%20AND%20a%3A%22catalina%22
RépondreSupprimerSi ton code est fait pour les versions de Tomcat antérieure à la version 7.0 (en l'occurence un Tomcat 6.0.37 pour moi), la librairie n'existe pas dans le répertoire lib. Je vais regarder avec ce que tu m'as donné.
RépondreSupprimerTu ne peux pas t'en sortir. Il faut avoir une version de Tomcat >= 7.0.41. Si ce n'est pas possible dans ton contexte il faut faire autrement et c'est à ton application de le gérer (voir http://javamind-fr.blogspot.fr/2013/05/cors-norme-w3c-alternative-jsonp.html). Il existe d'autres articles sur le sujet
RépondreSupprimerSalut Guillaume,
RépondreSupprimerTon lien vers ton ancien article est ce qu'il me fallait.
Merci