RFC: 2068
Оригинал: Hypertext Transfer Protocol - HTTP/1.1
Другие версии: RFC 2616
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Алексей Симонов

6.1.1. Код состояния и поясняющая фраза

Элемент код состояния (Status-Code) — это целочисленный трехразрядный код результата понимания и удовлетворения запроса. Эти коды полностью определены в разделе 10. Поясняющая фраза (Reason-Phrase) предназначена для короткого текстового описания кода состояния. Код состояния (Status-Code) предназначен для использования автоматами, а поясняющая фраза предназначена для живых пользователей. От клиента не требуется исследовать или отображать поясняющую фразу (Reason-Phrase).

Первая цифра кода состояния определяет класс ответа. Последние две цифры не имеют определенной роли в классификации. Имеется 5 значений первой цифры:

  • 1xx: Информационные коды — запрос получен, продолжается обработка.
  • 2xx: Успешные коды — действие было успешно получено, понято и обработано.
  • 3xx: Коды перенаправления — для выполнения запроса должны быть предприняты дальнейшие действия.
  • 4xx: Коды ошибок клиента — запрос имеет плохой синтаксис или не может быть выполнен.
  • 5xx: Коды ошибок сервера — сервер не в состоянии выполнить допустимый запрос.

Конкретные значения числовых кодов состояния, определенных в HTTP/1.1, и примерный набор соответствующих поясняющих фраз (Reason-Phrase) приводятся ниже. Поясняющие фразы (Reason-Phrase), перечисленные здесь являются рекомендуемыми, но могут быть заменены на эквивалентные без воздействия на протокол.

Status-Code    = "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
               | "301"   ; Постоянно перенесен, Moved
                         ; Permanently
               | "302"   ; Временно перемещен, Moved
                         ; Temporarily
               | "303"   ; Смотреть другой, See Other
               | "304"   ; Не модифицирован, Not Modified
               | "305"   ; Используйте прокси-сервер, Use
                         ; Proxy
               | "400"   ; Испорченный Запрос, Bad Request
               | "401"   ; Несанкционированно, Unauthorized
               | "402"   ; Требуется оплата, Payment
                         ; Required
               | "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
               | "412"   ; Предусловие неверно,
                         ; Precondition Failed
               | "413"   ; Объект запроса слишком большой,
                         ; Request Entity Too Large
               | "414"   ; URI запроса слишком длинный,
                         ; Request-URI Too Long
               | "415"   ; Неподдерживаемый медиа тип,
                         ; Unsupported Media Type
               | "500"   ; Внутренняя ошибка сервера,
                         ; Internal Server Error
               | "501"   ; Не реализовано, Not Implemented
               | "502"   ; Ошибка шлюза, Bad Gateway
               | "503"   ; Сервис недоступен, Service
                         ; Unavailable
               | "504"   ; Истекло время ожидания от шлюза,
                         ; Gateway Timeout
               | "505"   ; Не поддерживаемая версия HTTP,
                         ; HTTP Version Not Supported
               | extension-code

extension-code = 3DIGIT

Reason-Phrase  = *<TEXT не включающий CR, LF>

Коды состояния HTTP расширяемы. HTTP приложениям не требуется понимать значение всех зарегистрированных кодов состояния, хотя такое понимание очень желательно. Однако, приложения ДОЛЖНЫ понимать класс любого кода состояния, который обозначается первой цифрой, и обрабатывать любой нераспознанный ответ как эквивалентный коду состояния x00 этого класса, за исключением тех случаев, когда нераспознанный ответ НЕ ДОЛЖЕН кэшироваться. Например, если клиентом получен и не был распознан код состояния 431, то он может безопасно считать, что в запросе что-то было неправильно и обрабатывать ответ, как если бы был получен код состояния 400. В таких случаях агентам пользователя СЛЕДУЕТ представить пользователю объект, возвращенный в ответе, так как этот объект, вероятно, включает читабельную для человека информацию, которая поясняет необычное состояние.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.