Tomcat отклоняет некоторые запросы с пустым HTTP 400
ответом.
Пара примеров:
URL запроса, содержащий некодированные символы (например, '[' или ']' с момента Tomcat 8.5.x), вызывает:
INFO o.a.c.h.Http11Processor Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
Страница ошибки 400 также возвращается, например, когда размер заголовка слишком велик:
INFO: Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Request header is too large
Возможно ли иметь собственную страницу ошибок для этих ошибок? В более общем случае, когда Tomcat запускает этот ответ HTTP 400. Доставка пустого ответа - худший UX. Я знаю, что следует избегать создания таких запросов, но, тем не менее, я ищу запасной вариант.
Я настроил пользовательскую страницу ошибки в моем (встроенном) контексте Tomcat с ctx.addErrorPage(...)
для кода ошибки 400
.
Он работает правильно, когда запускается из моего веб-приложения.
Например. при передаче обработки ошибок механизму обработки ошибок сервлета с res.sendError(SC_BAD_REQUEST);
- res
, равным HttpServletResponse
.
К сожалению, для вида ошибок tomcat, описанного вверху, пользовательская страница ошибок не используется.
Спасибо!