Я надеюсь, что кто-то уже понял это. Я только что установил Geoserver 2.9 на ванильный дистрибутив Ubuntu 16.04. Метод Geoserver 2.8 для включения CORS с классом shanbe.hezoun больше не работает с Jetty 9.2.13.
Есть упоминания о том, что поддержка CORS уже включена в Jetty 9.2.13 в файле jetty-servlets.jar.
Библиотека Jetty, которая скомпилирована с Geoserver, содержит файл jetty-servlet-9.2.13.v20150730.jar в geoserver / lib, но не является jetty-servlets.9.2.13.v20150730.jar. Предполагается, что это одна и та же банка с другим названием?
Должно быть возможно включить CORS либо в geoserver / etc / webdefault.xml, либо в geoserver / webapps / geoserver / WEB-INF / web.xml.
Насколько я понимаю, сначала применяется файл webdefault.xml, а затем файл web.xml.
Я пробовал следующий фильтр в обоих XML. Я не так далеко, как добавление сопоставления фильтров. Добавление одного фильтра приведет к неправильному запуску службы Geoserver / Jetty.
<filter>
<filter-name>cross-origin</filter-name>
<filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
</filter>
Ответы:
Отредактируйте
webapps/geoserver/WEB-INF/web.xml
файл. В этом файле есть две ссылки на CORS:и
Вы должны раскомментировать оба блока (то есть удалить
<!--
и-->
изfilter
иfilter-mapping
блоков.Затем, когда вы перезапустите Jetty, вы можете проверить, что все работает, используя такую команду:
что, если все хорошо, даст результат, как:
Обновление 24 октября 2019
При этом больше не нужно добавлять следующий jar-файл в GeoServer (по крайней мере, с версиями 2.13.x и выше), и это вызовет ошибку . Я оставляю эту записку здесь для людей, борющихся со старыми версиями.
webapps/geoserver/WEB-INF/lib
в каталог geoserver-2.15.0 (или куда бы вы не распаковали zip). файл).источник
find $GEOSERVER_HOME -name "jetty*" | grep -E [[:digit:]]
.lib
.Это будет работать, если вы добавите фильтр в "geoserver / webapp / geoserver / WEB-INF / web.xml" и добавите jar "jetty-servlets.9.2.13.v20150730.jar" внутри "geoserver / webapp / geoserver / WEB-INF / Lib»
источник
с Jetty9, UbuntuServer 16.04, мне также пришлось изменить /etc/jetty9/start.ini, чтобы не получить следующую ошибку:
решение здесь : вы должны включить модуль сервлетов в вашем $ {jetty.base} /start.ini
следовательно, я заменил:
по :
источник
Принятый ответ Яна Тертона здесь абсолютно лучший. Так как я использую ручное редактирование Docker, это не так. Также я не гуру SED, но благодаря структуре web.xml (целевые строки уникальны в области видимости документа), я придумаю небольшой фрагмент:
Или в Dockerfile:
источник
Любой задается вопросом, какая версия Jetty у вас есть для вашего конкретного приложения геосервер.
Для OSX я просто запустил геосервер и посмотрел в журнале, что он должен показать что-то вроде:
Я уверен, что это похоже на журналы Tomcat при запуске с сервера Linux, если это необходимо.
Кроме того, это должно быть видно в заголовках ответа, т.е.
То есть, поскольку в принятом ответе упоминается попытка использования команды curl, она также представит версию сервера:
источник