Status Code и Reason Phrase в протоколе HTTP/1.1

(Chapter 6.1.1 Status Code and Reason Phrase from RFC 2068)
Андрей Аликберов, Центр Информационных Технологий

Status-Code это код результата попытки понять и выполнить запрос. Состоит из трех цифр. Полные определения значений Status-Code приведены в главе 10. Reason-Phrase - короткое текстовое описание Status-Code. Status-Code предназначен для программ, Reason-Phrase - для человека.

Первая цифра Status-Code определяет класс кода. Две следующие цифры никак не категоризируются. Существует пять классов кодов:

Ниже представлена таблица возможных значений Status-Code и соответствующих им значений Reason-Phrase для HTTP/1.1.

Status-CodeReason-Phrase
"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 Time-out (тайм-аут запроса)
"409"Conflict (конфликт)
"410"Gone (пойди дальше)
"411"Length Required (требуется правильная длина message-body)
"412"Precondition Failed (нарушено согласование)
"413"Request Entity Too Large (поле Entity запроса слишком велико)
"414"Request-URI Too Large (поле URI запроса слишком велико)
"415"Unsupported Media Type (неподдерживаемый media-тип)
"500"Internal Server Error (внутренняя ошибка сервера)
"501"Not Implemented (невыполнимо)
"502"Bad Gateway (неправильный шлюз)
"503"Service Unavailable (недоступный сервис)
"504"Gateway Time-out (тайм-аут шлюза)
"505"HTTP Version not supported (неподдерживаемая версия HTTP)

extension-code

extension-code = 3 цифры

Reason-Phrase = *<текст, исключая символы CR, LF>

Status-Code расширяемы. От HTTP-приложений не требует обязательное понимание всех зарегистрированных Status-Code. Однако приложения ОБЯЗАНЫ понимать класс любого Status-Code (первая цифра) и если встречен непонятный Status-Code, то приложения должны отреагировать на такой код как на x00. К примеру, если принят нераспознаваемый код со значением 431 - приложение должно поступить как будто бы был принят код 400. В таких случаях приложениям СЛЕДУЕТ возвращать пользователю нераспознанный код, причем желательно в human-readable формате.