J'espère que quelqu'un a déjà compris celui-ci. Je viens d'installer Geoserver 2.9 sur une distribution Ubuntu 16.04 vanilla. La méthode Geoserver 2.8 d'activation de CORS avec la classe shanbe.hezoun ne fonctionne plus avec Jetty 9.2.13.
Il est mentionné que la prise en charge de CORS est déjà fournie avec Jetty 9.2.13 dans le jetty-servlets.jar.
La bibliothèque Jetty qui est compilée avec Geoserver contient un jetty-servlet-9.2.13.v20150730.jar dans geoserver / lib mais pas jetty-servlets.9.2.13.v20150730.jar. Sont-ils censés être le même pot avec un nom différent?
Il devrait être possible d'activer CORS dans geoserver / etc / webdefault.xml ou dans geoserver / webapps / geoserver / WEB-INF / web.xml.
Ma compréhension est que le webdefault.xml est appliqué en premier et le web.xml par la suite.
J'ai essayé de suivre le filtre dans les deux xml. Je n'ai pas réussi à ajouter un mappage de filtre. L'ajout du filtre seul entraînera le démarrage incorrect du service Geoserver / Jetty.
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
Réponses:
Modifiez le
webapps/geoserver/WEB-INF/web.xml
fichier. Il y a deux références à CORS dans ce fichier:et
Vous devez décommenter les deux blocs (c'est-à-dire supprimer
<!--
et-->
des blocsfilter
etfilter-mapping
.Ensuite, lorsque vous redémarrez Jetty, vous pouvez tester que tout fonctionne en utilisant une commande comme:
qui si tout va bien donnera un résultat comme:
Mise à jour du 24 octobre 2019
Il n'est plus nécessaire d'ajouter le pot suivant à GeoServer (au moins avec les versions 2.13.x et ultérieures) et cela provoquera une erreur . Je laisse cette note ici pour les gens qui combattent les anciennes versions.
webapps/geoserver/WEB-INF/lib
dans le répertoire geoserver-2.15.0 (ou là où vous avez déballé le zip fichier).la source
find $GEOSERVER_HOME -name "jetty*" | grep -E [[:digit:]]
.lib
dossier également.Cela fonctionnera si vous ajoutez le filtre dans "geoserver / webapp / geoserver / WEB-INF / web.xml" et si vous ajoutez le pot "jetty-servlets.9.2.13.v20150730.jar" à l'intérieur "geoserver / webapp / geoserver / WEB-INF / lib "
la source
avec Jetty9, UbuntuServer 16.04, j'ai également dû modifier /etc/jetty9/start.ini, afin de ne pas obtenir l'erreur suivante:
la solution est là : vous devez activer le module servlets dans votre $ {jetty.base} /start.ini
par conséquent, j'ai remplacé:
par :
la source
La réponse acceptée par Ian Turton est absolument la meilleure ici. Puisque j'utilise l'édition manuelle de Docker, ce n'est pas le cas. Je ne suis pas non plus un gourou du SED, mais grâce à la structure de web.xml (les chaînes cibles sont uniques dans la portée du document), je propose un petit extrait:
Ou dans Dockerfile:
la source
Pour quiconque se demande quelle version de jetty vous avez pour votre application géoserveur particulière.
Pour OSX, j'ai simplement démarré geoserver et regardé dans le journal, il devrait montrer quelque chose comme:
Je suis sûr qu'il est similaire dans les journaux tomcat lors de l'exécution à partir d'un serveur Linux si nécessaire.
Il doit également être visible dans les en-têtes de réponse, à savoir:
Autrement dit, comme la réponse acceptée mentionne essayer d'utiliser la commande curl, elle présentera également la version du serveur:
la source