Mam nadzieję, że ktoś już to wymyślił. Właśnie zainstalowałem Geoserver 2.9 na waniliowej dystrybucji Ubuntu 16.04. Metoda Geoserver 2.8 włączania CORS z klasą shanbe.hezoun nie działa już z Jetty 9.2.13.
Istnieją wzmianki, że obsługa CORS jest już spakowana z Jetty 9.2.13 w jetty-servlets.jar.
Biblioteka Jetty skompilowana z Geoserver zawiera jetty-servlet-9.2.13.v20150730.jar w geoserver / lib, ale nie jetty-servlets.9.2.13.v20150730.jar. Czy to ma być ten sam słoik o innej nazwie?
Powinno być możliwe włączenie CORS w geoserver / etc / webdefault.xml lub w geoserver / webapps / geoserver / WEB-INF / web.xml.
Rozumiem, że plik webdefault.xml jest stosowany najpierw, a następnie plik web.xml.
Próbowałem następujących filtrów w obu XML. Do tej pory nie dodałem mapowania filtrów. Dodanie samego filtra spowoduje, że usługa Geoserver / Jetty nie uruchomi się poprawnie.
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
Odpowiedzi:
Edytuj
webapps/geoserver/WEB-INF/web.xml
plik. Tam są tym pliku dwa odniesienia do CORS:i
Państwo musi odkomentowaniu zarówno bloków (które to usunąć
<!--
i-->
odfilter
ifilter-mapping
bloków.Następnie po ponownym uruchomieniu Jetty możesz sprawdzić, czy wszystko działa, używając polecenia takiego jak:
co, jeśli wszystko będzie dobrze, da wynik taki jak:
Zaktualizuj 24 października 2019 r
Nie jest już konieczne dodawanie następującego słoika do GeoServer (przynajmniej w wersji 2.13.xi późniejszych) i spowoduje to błąd . Zostawiam tę notatkę tutaj dla osób walczących ze starszymi wersjami.
webapps/geoserver/WEB-INF/lib
katalogu geoserver-2.15.0 (lub gdziekolwiek rozpakowałeś zip plik).źródło
find $GEOSERVER_HOME -name "jetty*" | grep -E [[:digit:]]
.lib
folderu.Będzie działać, jeśli dodasz filtr w „geoserver / webapp / geoserver / WEB-INF / web.xml” i jeśli dodasz jar „jetty-servlets.9.2.13.v20150730.jar„ inside ”geoserver / webapp / geoserver / WEB-INF / lib ”
źródło
w przypadku Jetty9, UbuntuServer 16.04 musiałem również zmodyfikować /etc/jetty9/start.ini, aby nie pojawił się następujący błąd:
rozwiązanie jest tutaj : powinieneś włączyć moduł serwletów w swoim $ {jetty.base} /start.ini
w związku z tym zastąpiłem:
przez :
źródło
Odpowiedź zaakceptowana przez Iana Turtona jest tutaj absolutnie najlepsza. Ponieważ korzystam z ręcznej edycji Dockera, nie ma to miejsca. Nie jestem też guru SED, ale dzięki strukturze pliku web.xml (ciągi docelowe są unikalne w zakresie dokumentu), wymyśliłem mały fragment:
Lub w Dockerfile:
źródło
Dla każdego zastanawia się, którą wersję pomostu masz dla konkretnej aplikacji geoserver.
W przypadku OSX po prostu uruchomiłem geoserver i zajrzałem do dziennika, powinien on pokazywać coś takiego:
Jestem pewien, że jest podobny w logach tomcat, gdy jest uruchamiany z serwera Linux w razie potrzeby.
Ponadto powinien być widoczny w nagłówkach odpowiedzi, tj .:
Tzn., Jak wspomniano w zaakceptowanej odpowiedzi, spróbuj użyć polecenia curl, a także przedstawi wersję serwera:
źródło