Я использую web.xml, чтобы попытаться отключить методы HTTP, которые мы не используем, и вернуть тело, которое не содержит никакой информации о tomcat.
Поэтому я изменил web.xml приложения, чтобы:
<security-constraint>
<web-resource-collection>
<web-resource-name>restricted methods</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>TRACE</http-method>
<http-method>PUT</http-method>
<http-method>OPTIONS</http-method>
<http-method>DELETE</http-method>
<http-method>HEAD</http-method>
</web-resource-collection>
<auth-constraint />
</security-constraint>
Поэтому заблокированные методы возвращают 403 с пустым телом, для запрещенных. Но TRACE возвращает 405 с HTML-страницей Tomcat.
Я попытался перенаправить все ошибки через ErrorServlet с помощью:
<error-page>
<location>/ErrorServlet</location>
</error-page>
Это просто гарантирует, что тело контента равно 0. Но это, похоже, не перехватывает их.
Так почему же TRACE обрабатывается по-разному?
благодаря
Это имеет для меня смысл, потому что во всех случаях, кроме TRACE, вы отправляете запросы на веб-ресурс, идентифицированный URL-адресом, а код 403 означает, что доступ к ресурсу отклонен. Попробуйте получить доступ к одному и тому же ресурсу с помощью разрешенных методов. Наверное, это им запрещено?
TRACE, с другой стороны, не требует доступа к какому-либо ресурсу, он просто перекликается с входом клиента, поэтому 405 ("МЕТОД НЕ ДОПУСКАЕТСЯ") выглядит подходящим для этого случая.
Хорошая идея - создавать собственные страницы ошибок. Примеры, характерные для каждого кода ошибки, можно найти здесь: https://serverfault.com/questions/254102/custom-error-pages-on-apache-tomcat