Embedded Jetty не может выполнить GET для моих файлов ресурсов

Я использую SNI со встроенным Jetty с webAppContext. По большей части это работает нормально. Я перешел на версию 9.4.8 Jetty.

Служба запускается просто отлично в отношении SNI и правильно загружает все и читает все сертификаты. Но когда я делаю определенные запросы от нескольких браузеров, которые включают JS и файлы изображений в моем пути к ресурсам, браузер жалуется, что для этих файлов не определено GET, но у него нет проблем со ссылками/операциями GETting Controller, определенными с помощью @RequestMapping.

Следующий код отлично работал в предыдущих версиях Jetty, но не работает сейчас. Изменился ли в Jetty 9.4.8 способ разрешения относительных ссылок.

Любые мысли будут оценены.


Код Jetty (до этого момента он работал годами)

 WebAppContext webAppContext = new WebAppContext();
        Resource webappDir = Resource.newResource(System.getProperty("traffic.app.dir"));
        webAppContext.setBaseResource(webappDir);
        webAppContext.setDescriptor("WEB-INF/web.xml");
        webAppContext.setContextPath("/");
        webAppContext.setParentLoaderPriority(false);
        webAppContext.setLogUrlOnStart(true);

и фрагмент html, который сейчас не работает,

<script type="text/javascript" src="/js/spin.js"></script>

где путь к ресурсу file:///f/f2-traffic/webapp/

Ошибка

Loading failed for the <script> with source “http://test2:8000/tools/js/spin.js”.

405 Request method 'GET' not supported.

и адрес страницы, где все это происходит, http://test2:8000/tools/tsub

ОБНОВИТЬ

В файле web.xml у меня есть следующее

...
    <filter-mapping>
        <filter-name>springSecurityFilterChain</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
...
<filter-mapping>
        <filter-name>domainTrafficDispatcher</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

Это проблема?


person Allan Wax    schedule 22.10.2018    source источник
comment
У вашего WEB-INF/web.xml url-pattern установлено значение /* для какого-то сервлета или фильтра?   -  person Joakim Erdfelt    schedule 22.10.2018
comment
Кроме того, Jetty 9.4.8 является уязвимым выпуском, используйте что-то большее недавний, чтобы пройти CVE на 9.4.8.   -  person Joakim Erdfelt    schedule 22.10.2018
comment
Попробую оба предложения   -  person Allan Wax    schedule 22.10.2018
comment
@JoakimErdfelt Переход на последнюю версию Jetty, похоже, устраняет очевидную ошибку, но не решает проблему.   -  person Allan Wax    schedule 23.10.2018
comment
Вы настроили альтернативный дескриптор по умолчанию? Используете ли вы библиотеку Rest, которая сама обслуживает статические файлы? (если да, то настроили ли вы его, чтобы он этого не делал?) У вас есть сервлет url-pattern для / (или с именем default)?   -  person Joakim Erdfelt    schedule 23.10.2018


Ответы (1)


@joakimerdfelt Итак, я решил свою проблему после долгой работы по выдергиванию волос.

В процессе исправления я добавил новый Controller для обработки ссылок «по умолчанию» на /js/, /images/ и т. д. и подумал, что это, по крайней мере, исправит проблему. Это не так.

После долгого выдергивания волос выясняется, что кто-то два года назад для гораздо более старой версии программного обеспечения добавил сопоставления (видимо, ни к чему). Я удалил эти сопоставления и добавил конфигурацию безопасности, чтобы не применять безопасность при извлечении файлов такого типа. Безопасность применяется ко всем другим ссылкам. Я удалил Controller, чтобы была выполнена обработка по умолчанию, и... все просто заработало так, как должно.

Спасибо за все предложения.

person Allan Wax    schedule 24.10.2018