Вы проверяли это?Папки /META-INF
и /WEB-INF
должны быть общедоступными недоступными в соответствии со спецификацией сервлета.Клиент должен был получить 404 за это.В противном случае это была бы ошибка в DefaultServlet
.
Вот выдержка из Servlet 2.5 spec :
Структура каталогов SRV.9.5
... Кроме того, любые запросы от клиента на доступ к ресурсам в каталоге WEB-INF/
должны быть возвращены с ответом SC_NOT_FOUND(404)
.
и
SRV.9.6 Файл архива веб-приложения
... Кроме того, любые запросы на доступ к ресурсам в каталоге META-INF
должны возвращаться с ответом SC_NOT_FOUND(404)
.
Обновление : ОК, я забираю свои слова обратно.Я могу воспроизвести это на последних Tomcat 6 и 7. Это определенно ошибка в DefaultServlet
.Он работает нормально (возвращает 404) на Glassfish 3.0.1.
Обновление 2: Я сообщал об этом парням Tomcat как выпуск 50026 .
Обновление3: один из парней из Tomcat ответил:
Я думаю, что это WONTFIX
.
Механизм сервлета защищает WEB-INF
и META-INF
пути в веб-приложении (которое работает нормально), а не файлы с таким именем по произвольным путям.
На самом деле здесь вы настраиваете сервлет, обслуживающий файлы общего назначения, для монтирования всего веб-приложения.по другому пути - это эквивалентно настройке Apache для того же.За исключением того, что DefaultServlet не является файловым сервером общего назначения - он предназначен для сопоставления с /
, и вы не можете настроить его на выполнение каких-либо действий, кроме обслуживания файлов из каталога веб-приложения.
I 'Я предполагаю, что вы пытаетесь обойти проблему, связанную с отображением другого сервлета в /*
, который в основном пытается обойти работу механизма сервлета. Как получить доступ к статическим ресурсам при отображении сервлета глобального фронт-контроллера в / * есть пример лучшего подхода к вещам, если вы пытаетесь это сделать.
Советы по перемонтированию DefaultServlet
в Tomcat, похоже, существовали до тех пор, пока существует Tomcat, поэтому, возможно, нам нужно заблокировать его (чтобы люди не могли случайно создать небезопасные конфигурации) или поддержать монтирование определенных каталогов (внутриили вне веб-приложения) и прерываются при доступе к корневым ресурсам при сопоставлении с подпутем в любом случае.
Обновление 4: они в конечном итогеисправили это:
Исправления для DefaultServlet и WebdavServlet зафиксированы для 7.0.x (будет в 7.0.4+) и предложены для 6.0.x.Нужно будет проверить 5.5.x и посмотреть, нужен ли для этого бэкпорт.