Отправка 100 Продолжайте использовать Java Servlet API - PullRequest
2 голосов
/ 11 мая 2009

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

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

Ответы [ 4 ]

6 голосов
/ 11 мая 2009

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

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

4 голосов
/ 16 сентября 2010

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

2 голосов
/ 13 мая 2009

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

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

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

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

0 голосов
/ 11 мая 2009

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

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

...