Ich hoffe, jemand hat das schon herausgefunden. Ich habe gerade Geoserver 2.9 auf einer Vanilla Ubuntu 16.04 Distribution installiert. Die Geoserver 2.8-Methode zum Aktivieren von CORS mit der shanbe.hezoun-Klasse funktioniert nicht mehr mit Jetty 9.2.13.
Es wird erwähnt, dass die CORS-Unterstützung bereits in Jetty 9.2.13 in der jetty-servlets.jar enthalten ist.
Die mit Geoserver kompilierte Jetty-Bibliothek enthält in geoserver / lib ein jetty-servlet-9.2.13.v20150730.jar, nicht jedoch jetty-servlets.9.2.13.v20150730.jar. Sollen diese das gleiche Glas mit einem anderen Namen sein?
Es sollte möglich sein, CORS entweder im Geoserver / etc / webdefault.xml oder im Geoserver / webapps / geoserver / WEB-INF / web.xml zu aktivieren.
Nach meinem Verständnis wird zuerst die Datei webdefault.xml und anschließend die Datei web.xml angewendet.
Ich habe versucht, Filter in beiden xml zu folgen. Ich bin noch nicht so weit, eine Filterzuordnung hinzuzufügen. Das Hinzufügen des Filters allein führt dazu, dass der Geoserver / Jetty-Dienst nicht ordnungsgemäß gestartet wird.
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
Antworten:
Bearbeiten Sie die
webapps/geoserver/WEB-INF/web.xml
Datei. In dieser Datei befinden sich zwei Verweise auf CORS:und
Sie müssen beide Blöcke auskommentieren (d. H. Entfernen
<!--
und-->
aus den Blöckenfilter
und)filter-mapping
.Wenn Sie dann Jetty neu starten, können Sie mit einem Befehl wie dem folgenden testen, ob alles funktioniert:
was, wenn alles in Ordnung ist, zu einem Ergebnis führt wie:
Update 24. Oktober 2019
Es ist nicht länger erforderlich, das folgende Jar zu GeoServer hinzuzufügen (zumindest mit den Versionen 2.13.x und höher), und es wird ein Fehler verursacht . Ich hinterlasse diese Notiz hier für Leute, die gegen ältere Versionen kämpfen.
webapps/geoserver/WEB-INF/lib
das Verzeichnis geoserver-2.15.0 (oder an den Ort, an dem Sie die Zip entpackt haben) Datei).quelle
find $GEOSERVER_HOME -name "jetty*" | grep -E [[:digit:]]
.lib
Ordner hinzugefügt hatte .Es funktioniert, wenn Sie den Filter in "Geoserver / WebApp / Geoserver / WEB-INF / web.xml" und das JAR "Jetty-Servlets.9.2.13.v20150730.jar" in "Geoserver / WebApp / Geoserver" hinzufügen / WEB-INF / lib "
quelle
Mit Jetty9, UbuntuServer 16.04 musste ich auch /etc/jetty9/start.ini ändern, um nicht den folgenden Fehler zu erhalten:
Die Lösung ist hier : Sie sollten das Servlets-Modul in Ihrer $ {jetty.base} /start.ini aktivieren
folglich ersetzte ich:
durch :
quelle
Akzeptierte Antwort von Ian Turton ist hier absolut am besten. Da ich Docker verwende, ist die manuelle Bearbeitung nicht der Fall. Auch ich bin kein SED-Guru, aber dank der Struktur von web.xml (Zielzeichenfolgen sind im Dokumentbereich einzigartig) habe ich ein kleines Snippet:
Oder in Dockerfile:
quelle
Für jedermann ist fraglich, welche Version von Anlegestelle Sie für Ihre spezielle Geoserver-Anwendung haben.
Für OSX habe ich einfach den Geoserver gestartet und im Protokoll nachgeschaut, es sollte ungefähr so aussehen:
Ich bin sicher, dass es in den Tomcat-Protokollen ähnlich ist, wenn es von einem Linux-Server ausgeführt wird, falls erforderlich.
Außerdem sollte es in den Antwortköpfen sichtbar sein, dh:
Wenn in der akzeptierten Antwort der Befehl curl verwendet wird, wird auch die Serverversion angezeigt:
quelle