JSP Коды состояния HTTP

HTTP-запросы и HTTP-ответы имеют схожие форматы, оба имеют следующую структуру:

  • Начинается со строки состояния + CRLF (возврат каретки, перевод строки)
  • Ноль или более строк заголовков + CRLF
  • Пустая строка, например, CRLF
  • Необязательное тело сообщения, например файл, данные запроса, вывод запроса

Например, заголовок ответа сервера выглядит следующим образом:

HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
  (Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
Строка состояния содержит версию HTTP, код состояния и краткое сообщение, соответствующее коду состояния.

В следующей таблице перечислены коды состояния HTTP, которые могут быть возвращены сервером, и соответствующие им сообщения:

Код состояния Сообщение Описание
100 Continue Сервер получил только часть запроса, но пока запрос не отклонён, клиент должен продолжить запрос.
101 Переключение протоколов Сервер переключает протоколы
200 ОК Запрос подтверждён
201 Создано Запрос был завершён, и создан новый ресурс
202 Принято Запрос принят, но обработка ещё не завершена
203 Неавторитетная информация  
204 Нет содержимого  
205 Сброс содержимого  
206 Частичное содержимое  
300 Множественный выбор Список гиперссылок; пользователь может выбрать гиперссылку и перейти по ней; поддерживается до 5 гиперссылок
301 Перемещено навсегда Запрошенная страница была перемещена на новый URL
302 Найдено Запрошенная страница временно перемещена на новый URL
303 Смотрите другое Запрошенную страницу можно найти по другому URL
304 Не изменено  
305 Использовать прокси  
306 Не используется Этот код состояния больше не используется, но код состояния зарезервирован
307 Временное перенаправление Запрошенная страница временно перемещена на новый URL
400 Некорректный запрос Сервер не смог понять запрос
401 Не авторизован Для запрошенной страницы требуются имя пользователя и пароль
402 Требуется оплата Этот код состояния в настоящее время не может быть использован
403 Запрещено Доступ к запрошенной странице запрещён
404 Не найдено Сервер не смог найти запрошенную страницу
405 Метод не разрешён Метод, указанный в запросе, не разрешён
406 Неприемлемо Сервер может создать только ответ, который клиент не может принять
407 Требуется аутентификация прокси Прокси-сервер должен быть аутентифицирован, прежде чем запрос может быть обслужен
408 Тайм-аут запроса Время запроса превысило время ожидания сервера, и соединение было закрыто
409 Конфликт В запросе есть противоречия
410 Удалён Запрошенная страница больше недоступна
411 Требуется длина "Content-Length" не определён, и сервер отказывается принимать запрос
412 Предварительное условие не выполнено Предварительное условие запроса было оценено сервером как ложное
413 Сущность запроса слишком велика Сервер отказался принять запрос, потому что сущность запроса слишком велика
414 Слишком длинный Request-url Сервер отказался принять запрос, потому что URL слишком длинный. Это часто происходит, когда при преобразовании запроса "POST" в запрос "GET" добавляется большой объём параметров запроса
415 Неподдерживаемый тип медиа Сервер отказался принять запрос, потому что медиатип не поддерживается
417 Ожидание не оправдалось  
500 Внутренняя ошибка сервера Запрос был неполным; сервер обнаружил непредвиденное состояние
501 Не реализовано Запрос был неполным; сервер не предоставляет требуемую функциональность
502 Плохой шлюз Запрос был неполным; сервер получил неверный ответ от вышестоящего сервера
503 Сервис недоступен Запрос был неполным; сервер временно перезагружается или завершает работу
504 Тайм-аут шлюза Тайм-аут шлюза
505 Версия HTTP не поддерживается Сервер не поддерживает указанную версию HTTP

Методы установки кодов состояния HTTP

В следующей таблице перечислены методы, используемые для установки кодов состояния в классе HttpServletResponse:

S.N. Метод & Описание
1 public void setStatus ( int statusCode )Этот метод может установить любой код состояния. Если ваш ответ содержит специальный код состояния и документ, убедитесь, что вызываете метод setStatus перед возвратом любого содержимого с PrintWriter.
2 public void sendRedirect(String url)Этот метод генерирует ответ 302, а также генерирует заголовокLocation, сообщающий URL нового документа
3 public void sendError(int code, String message)Этот метод автоматически вставляет код состояния (обычно 404) и короткое сообщение в HTML-документ и отправляет его обратно клиенту

Пример программы с кодом состояния HTTP

Следующий пример отправит в браузер код ошибки 407, и затем браузер сообщит вам "Need authentication!!!".

<html>
<head>
<title>Setting HTTP Status Code</title>
</head>
<body>
<%
   // 设置错误代码,并说明原因
   response.sendError(407, "Need authentication!!!" );
%>
</body>
</html>

Откройте указанную выше страницу JSP, и вы получите следующий результат:

js_http_status_codes

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

Другие расширения