Назад | Перейти на главную страницу

Проблема с завершающей косой чертой Tomcat 7 с веб-приложениями

Недавно я обновил свой сервер Tomcat с версии 6.x до самой последней версии 7.x.

Я столкнулся с небольшой проблемой, надеясь получить помощь.

У меня приложение вызывает MyApp

На tomcat6, когда я пошел в http://www.example.com/MyApp/page/ Обычно я получаю желаемый результат.

Теперь, на tomcat7, при посещении того же точного URL-адреса (с косой чертой в конце) я получаю сообщение об ошибке: «Ресурс недоступен», поскольку tomcat считает, что / MyApp / page / - это полное имя веб-приложения, а не имена запросов. страницу в веб-приложении MyApp.

Мне нужна косая черта в конце моего URL-адреса, потому что в противном случае я получаю сообщение об ошибке: «HTTP-статус 405 - метод запроса 'GET' не поддерживается», что нормально, потому что я действительно не разрешил метод GET для запроса «страницы» .

Если кто-то знает, как сообщить tomcat, что конечная косая черта после пути существующего веб-приложения не должна предполагать перенаправление его на новое веб-приложение, вызывающее всю «строку» и просто обрабатывать запрос, как на tomcat6, было бы здорово!

Древний вопрос, но поскольку я недавно боролся с завершающей косой чертой в Tomcat 8, я знаю, что проблемы с косой чертой продолжают преследовать мир пользователей Tomcat. :-)

Вы можете столкнуться с изменениями в том, как Tomcat обрабатывает перенаправления при загрузке корневого контекста. Проверять, выписываться ошибка 58660 и прочтите там некоторые обсуждения разработчиков. Возможно, вам придется отключить картограф по умолчанию, изменив mapperContextRootRedirectEnabled атрибут Context элемент в conf/context.xml.

Проверьте свой список приветственных файлов ... Далее следует предположение ...

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

Вот где начинается самое интересное ... Многие люди хотят использовать * .do для таких вещей, как struts. Поэтому они хотят, чтобы index.do был домашней страницей. Или также распространен index.jsp, где * .jsp сопоставляется с JspServlet.

Вот где развлекаются. Допустим, ваши приветственные файлы - это index.jsp, index.do.

Tomcat (IIRC) сначала перебирает список файлов приветствия в поисках ресурсов с таким именем.

Затем он выполнит второй проход для поиска соответствующих сопоставлений. Поэтому, если index.jsp указан в списке приветствия и отображается * .jsp. Затем tomcat попытается перенаправить на index.jsp, и вы получите 404.

Итак, я собираюсь предположить, что у вас есть отображение сервлета и перекрытие приветственных файлов. И поведение этого сервлета не поддерживает GET. (Отсюда и 405)

Если в вашем проекте используется динамический веб-модуль версии 2.2, вам необходимо явно создать по крайней мере один файл (может быть пустой файл html), присутствующий в web.xml (например, index.html) в вашем WebContent.