English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Формат 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 | Switching Protocols | Протокол серверного коммутатора |
200 | OK | Запрос подтвержден |
201 | Created | Запрос был полным, новый ресурс был создан |
202 | Accepted | Запрос принят, но не обработан до конца |
203 | Non-authoritative Information | |
204 | No Content | |
205 | Reset Content | |
206 | Partial Content | |
300 | Multiple Choices | Таблица ссылок, из которой пользователь может выбрать ссылку и перейти по ней, максимальная поддержка 5 ссылок |
301 | Moved Permanently | Запрашиваемая страница уже перемещена на новый URL |
302 | Found | Запрашиваемая страница временно перемещена на новый URL |
303 | See Other | Запрашиваемая страница доступна по другому URL |
304 | Not Modified | |
305 | Use Proxy | |
306 | Unused | Этот код состояния больше не используется, но код состояния сохранен |
307 | Temporary Redirect | Запрашиваемая страница временно перемещена на новый URL |
400 | Bad Request | Сервер не может распознать запрос |
401 | Unauthorized | Запрашиваемая страница требует имени пользователя и пароля |
402 | Требуется оплата | В настоящее время этот код состояния еще не используется |
403 | Forbidden | Доступ к запрашиваемой странице запрещен |
404 | Not Found | Сервер не может найти запрашиваемую страницу |
405 | Method Not Allowed | Запрашиваемый метод не разрешен |
406 | Not Acceptable | Сервер может создать только один ответ, который клиент не принимает |
407 | Proxy Authentication Required | Прежде чем обслужить запрос, необходимо аутентифицировать сервер-посредник |
408 | Request Timeout | Время запроса превышает время ожидания сервера, соединение разорвано |
409 | Conflict | Запрос содержит противоречия |
410 | Gone | Запрашиваемая страница больше не доступна |
411 | Length Required | "Content-Length" не определено, запрос отклоняется |
412 | Precondition Failed | Предположение проверено сервером как false |
413 | Request Entity Too Large | Запрос отклоняется, так как объект запроса слишком велик |
414 | Request-url Too Long | Запрос отклоняется, так как URL слишком длинный. Часто встречается при преобразовании "POST" запроса в "GET" запрос с большим количеством информации в приложенных запросах |
415 | Unsupported Media Type | Сервер отказывается принимать запрос, так как не поддерживается тип媒体的 |
417 | Expectation Failed | |
500 | Internal Server Error | Запрос неполный, сервер встретил неожиданную ситуацию |
501 | Not Implemented | Запрос неполный, сервер не предоставляет необходимые функции |
502 | Bad Gateway | Запрос неполный, сервер получил от上游 сервера недействительный ответ |
503 | Service Unavailable | Запрос неполный, сервер временно перезапустился или закрылся |
504 | Gateway Timeout | Gateway Timeout |
505 | HTTP Version Not Supported | Сервер не поддерживает указанную версию 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 и автоматически отправляет его клиенту |
Следующий пример отправит код ошибки 407 браузеру, после чего браузер сообщит вам "Need authentication!!!".
<html> <head> <title>Настройка кода состояния HTTP</title> </head> <body> <% // Установить код ошибки и объяснить причину response.sendError(407, "Need authentication!!!"); %> </body> </html>
При посещении вышеуказанной страницы JSP вы получите следующие результаты:
Вы также можете попробовать использовать другие коды состояния, чтобы увидеть, получите ли вы что-то неожиданное.