2015-04-24 4 views
1

Привет, я хочу отказаться от входящих запросов со слишком большим телом или заголовком в моем Jetty. Предположим, что мне нужно установить некоторый фильтр, но я не нашел никакого решения. Есть ли у вас какие-либо предложения? Благодарю.Jetty - фильтрация больших сообщений

ответ

1

достаточно просто построить Servlet Filter или Jetty Handler, что обращает внимание на Content-Length заголовка запроса, а затем отклоняет (реагирующий с кодом состояния ошибки HTTP) запрос.

Что касается предельного размера заголовка, который управляется HttpConfiguration.setRequestHeaderSize(int)

Однако есть класс запросов, который использует Chunked Transfer-Encoding, с этими видами запросов, нет Content-Length и вы просто должны отклоните запрос при чтении с HttpServletRequest.getInputStream() после того, как он достигнет определенного размера.

Существует также сложность содержимого тела запроса многопользовательского режима Mime и того, как вы определяете содержание запроса слишком велико.

Еще одно примечание, к сожалению, из-за того, что обработка HTTP-соединения должна выполняться, даже если клиент отправляет вам слишком большой объем содержимого запроса, сервер все равно должен прочитать это содержимое всего тела и выбросить его. Это полузакрытый сценарий, найденный в спецификации, его до клиента, чтобы увидеть ранний отклоненный ответ HTTP и закрыть/завершить соединение.