Поиск…


параметры

Код состояния Причина-фраза - Описание
100 Продолжить - клиент должен отправить следующую часть запроса с несколькими частями.
101 Переключение протоколов - сервер меняет версию или тип протокола, используемые в этом сообщении.
200 OK - сервер получил и выполнил запрос клиента.
201 Создано - сервер принял запрос и создал новый ресурс, доступный под URI в заголовке Location .
202 Принято - сервер получил и принял запрос клиента, но он еще не начал или не завершил обработку.
203 Неавторитная информация - сервер возвращает данные, которые могут быть поднабором или надмножеством информации, доступной на исходном сервере. В основном используется прокси.
204 Нет содержимого - используется вместо 200 (ОК), когда тела нет ответа.
205 Сбросить содержимое - идентично 204 (без содержимого), но клиент должен перезагрузить активный вид документа.
206 Частичное содержимое - используется вместо 200 (ОК), когда клиент запросил заголовок Range .
300 Несколько вариантов - запрашиваемый ресурс доступен в нескольких URI, и клиент должен перенаправить запрос на URI, указанный в списке в теле сообщения.
301 Перемещено на постоянной основе - запрошенный ресурс больше не доступен в этом URI, и клиент должен перенаправить этот и все будущие запросы в URI, указанный в заголовке Location .
302 Найдено - ресурс временно находится под другим URI. Этот запрос должен быть перенаправлен на подтверждение пользователя в URI в заголовке Location , но будущие запросы не должны быть изменены.
303 См. Прочее - очень похоже на 302 (Найдено), но не требует ввода пользователем для перенаправления на предоставленный URI. Предоставленный URI должен быть получен с помощью запроса GET.
304 Не изменено - клиент отправил If-Modified-Since или аналогичный заголовок, и ресурс не был изменен с этой точки; клиент должен отображать кешированную копию ресурса.
305 Использовать прокси - запрошенный ресурс необходимо запросить снова через прокси-сервер, указанный в поле заголовка « Location .
307 Временное перенаправление - идентично 302 (найдено), но клиенты HTTP 1.0 не поддерживают 307 ответов.
400 Плохой запрос - клиент отправил неверный запрос, содержащий синтаксические ошибки, и должен изменить запрос, чтобы исправить это, прежде чем повторять его.
401 Неавторизованный - запрошенный ресурс недоступен без аутентификации. Клиент может повторить запрос, используя заголовок Authorization чтобы предоставить данные аутентификации.
402 Обязательный платеж - зарезервированный, неуказанный код состояния для использования приложениями, для которых требуется подписка на пользователя для просмотра содержимого.
403 Запрещено - сервер понимает запрос, но отказывается выполнять его из-за существующих средств контроля доступа. Запрос не следует повторять.
404 Не найдено. На этом сервере нет ресурса, который соответствует запрошенному URI. Может использоваться вместо 403, чтобы не подвергать деталям контроля доступа.
405 Метод не разрешен - ресурс не поддерживает метод запроса (HTTP-глагол); В заголовке « Allow перечислены приемлемые методы запроса.
406 Не приемлемо - ресурс имеет характеристики, которые нарушают принимаемые заголовки, отправленные в запросе.
407 Требуется прокси-аутентификация - аналогично 401 (неавторизованный), но указывает, что клиент должен сначала пройти аутентификацию с промежуточным прокси.
408 Тайм-аут запроса - сервер ожидал другого запроса от клиента, но ни один из них не был предоставлен в течение приемлемого таймфрейма.
409 Конфликт - запрос не может быть завершен, поскольку он противоречит текущему состоянию ресурса.
410 Gone - аналогично 404 (Not Found), но указывает на постоянное удаление. Отсутствует адрес пересылки.
411 Требуемая длина - клиент не указал допустимый заголовок Content-Length и должен сделать это до того, как сервер примет этот запрос.
412 Precondition Failed - ресурс недоступен со всеми условиями, указанными условными заголовками, отправленными клиентом.
413 Request Entity Too Large - сервер в настоящее время не может обработать тело сообщения той длины, которую отправил клиент.
414 Request-URI Too Long - сервер отказывается от запроса, потому что Request-URI длиннее, чем сервер готов интерпретировать.
415 Неподдерживаемый тип носителя - сервер не поддерживает MIME или тип носителя, указанный клиентом, и не может обслуживать этот запрос.
416 Запрошенный диапазон не удовлетворен - клиент запросил диапазон байтов, но сервер не может предоставить контент этой спецификации.
417 Expectation Failed - клиент указал ограничения в заголовке Expect которые сервер не может выполнить.
500 Внутренняя ошибка сервера - сервер встретил неожиданное условие или ошибку, которая мешает ему выполнить этот запрос.
501 Не реализовано - сервер не поддерживает функции, необходимые для завершения запроса. Обычно используется для указания метода запроса, который не поддерживается на каком-либо ресурсе.
502 Bad Gateway - сервер является прокси-сервером и получил неверный ответ от восходящего сервера при обработке этого запроса.
503 Сервис недоступен - сервер находится под большой нагрузкой или проходит техническое обслуживание, и в настоящее время он не может выполнять этот запрос.
504 Gateway Timeout - сервер является прокси-сервером и не получил ответ от восходящего сервера своевременно.
505 Версия HTTP не поддерживается. Сервер не поддерживает версию HTTP-протокола, с которой клиент выполнил свой запрос.

Основной формат ответа

Когда HTTP-сервер получает правильно сформированный HTTP-запрос , он должен обработать информацию, содержащую запрос, и вернуть ответ клиенту. Простой ответ HTTP 1.1 может выглядеть как любое из следующего, обычно за которым следуют несколько полей заголовка и, возможно, тело ответа:

HTTP/1.1 200 OK \r\n
HTTP/1.1 404 Not Found \r\n
HTTP/1.1 503 Service Unavailable \r\n

Простой ответ HTTP 1.1 имеет такой формат:

HTTP-Version Status-Code Reason-Phrase CRLF

Как и в запросе, HTTP-Version указывает версию используемого протокола HTTP; для HTTP 1.1 это всегда должно быть строка HTTP/1.1 .

Status-Code - это трехзначный код, который указывает статус запроса клиента. Первая цифра этого кода - это класс статуса , который помещает код состояния в одну из 5 категорий ответа [1] :

  • 1xx Информационный - сервер получил запрос и обработка продолжается
  • 2xx Success - сервер принял и обработал запрос
  • 3xx Redirection - требуется дальнейшие действия со стороны клиента для завершения запроса
  • Ошибки клиента 4xx - клиент отправил запрос, который был искажен или не может быть выполнен
  • Ошибки сервера 5xx - запрос был действительным, но сервер не может выполнить его в настоящее время

Reason-Phrase - это краткое описание кода состояния. Например, код 200 имеет причину фразы OK ; код 404 имеет фразу « Not Found . Полный список фраз причины доступен в параметрах, ниже или в спецификации HTTP .

Линия заканчивается парой обратной линии возврата каретки, обычно представленной \r\n .

Дополнительные заголовки

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

Полный список доступных заголовков определен в разделе 6.2 спецификации . Наиболее часто используемые заголовки:

  • Server , который функционирует как заголовок запроса User-Agent для сервера;
  • Location , которое используется для ответов статуса 201 и 3xx, чтобы указать URI для перенаправления; а также
  • ETag , который является уникальным идентификатором для этой версии возвращаемого ресурса, чтобы клиенты могли кэшировать ответ.

Заголовки ответов поступают после строки состояния, и поскольку заголовки запросов формируются как таковые:

Name: Value CRLF

Name содержит имя заголовка, например ETag или Location , а Value - значение, заданное сервером для этого заголовка. Линия заканчивается CRLF.

Ответ с заголовками может выглядеть так:

HTTP/1.1 201 Created \r\n
Server: WEBrick/1.3.1 \r\n
Location: http://example.com/files/129742 \r\n

Органы сообщения

Как и в структурах запросов , HTTP-ответы могут содержать тело сообщения. Это предоставляет дополнительные данные, которые клиент будет обрабатывать. Примечательно, что ответы 200 OK на хорошо сформированный запрос GET должны всегда предоставлять тело сообщения, содержащее запрошенные данные. (Если их нет, 204 No Content - более подходящий ответ).

Тело сообщения включено после всех заголовков и двойной CRLF. Что касается запросов, то его длина в байтах должна быть задана заголовком Content-Length . Следовательно, успешный ответ на запрос GET может выглядеть так:

HTTP/1.1 200 OK\r\n
Server: WEBrick/1.3.1\r\n
Content-Length: 39\r\n
ETag: 4f7e2ed02b836f60716a7a3227e2b5bda7ee12c53be282a5459d7851c2b4fdfd\r\n
\r\n
Nobody expects the Spanish Inquisition.


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow