Отправка 100 Продолжайте использовать Java Servlet API

Можно ли отправить код состояния HTTP "100 Continue", а затем и какой-нибудь другой код состояния после обработки всего запроса с использованием Java Servlet API (HttpServletResponse)?

Я не могу найти однозначного ответа "Нет", хотя API, похоже, его не поддерживает.

4 ответа

Решение

Я полагаю, вы имеете в виду "100 Продолжить".

Ответ: нет, вы не можете (по крайней мере, не так, как предполагалось, как предварительный ответ). В общем случае движок сервлета делает это автоматически, когда этого требует запрос. Конечно, это делает невозможным для сервлета предотвращать отправку статуса 100 - эта проблема известна в API сервлетов и известна тем, что сейчас ощущается как эоны.

Я знаю, что Jetty будет ждать, пока вызовут getReader() или getInputStream(), прежде чем отправит 100. Я думаю, что это поведение, которое вы ищете. Я не знаю, что делает Tomcat.

Вы хотели спросить, как я могу отправить код состояния до получения полного запроса, чтобы прервать выполняющийся запрос из-за пропущенного поля заголовка? Кажется, что это невозможно со стандартными сервлетами.

Какой сервер вы используете?

Некоторые расширения сервлетов сервера могут разрешить это, например , сервлет Tomcat Comet может отправлять EventType.BEGIN, как только заголовки доступны для обработки, что может позволить вам прервать PUT, который не имеет правильной аутентификации.

В качестве альтернативы ваш сервер может иметь плагин для отклонения запросов на основе заголовков.

Вы имеете в виду код статуса 100?

API поддерживает отправку SC_CONTINUE.

Другие вопросы по тегам