Отправка 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.