HTTP коды
ответы сервера

HTTP (HyperText Transfer Protocol) - Протокол передачи гипертекста один из самых важных для работы интернета протокол.

Часть первой строки ответа сервера при запросах по протоколу HTTP.

Классы HTTP

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

1. Информационные

В этот класс выделены коды, информирующие о процессе передачи.

100 Continue - Продолжить. Сервер удовлетворён начальными сведениями о запросе и отпровляет промежуточный ответ. Запрос успешно принят и клиент может продолжать пересылать заголовки.

101 Switching Protocols - сервер предлагает перейти на более подходящий для указанного ресурса протокол; список предлагаемых протоколов сервер обязательно указывает в поле заголовка Update. Если клиента это заинтересует, то он посылает новый запрос с указанием другого протокола.

102 Processing - В обработке. Запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме.

105 Name Not Resolved при разрешении доменного имени возникла ошибка в связи с неверным или отсутствующем IP-адресом DNS-сервера.

2. Успешные

Сообщения данного класса информируют о случаях успешного принятия и обработки запроса клиента. В зависимости от статуса сервер может ещё передать заголовки и тело сообщения.

200 OK - Успешно. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или в теле сообщения в соответствии с переданным методом.

201 Created - Создано. В результате успешного выполнения запроса PUT был создан новый ресурс. Сервер должен указать его местоположение в заголовке Location.

202 Accepted - запрос был принят на обработку, но она не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс.

203 Non-Authoritative Information - аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной.

204 No Content - сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные.

205 Reset Content - сервер обязывает клиента сбросить введённые пользователем данные. Тела сообщения сервер при этом не передаёт и документ обновлять не обязательно.

206 Partial Content - Частичное содержимое. Сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Используется для загрузки контента в несколько потоков. Особое внимание при работе с подобными ответами следует уделить кэшированию.

207 Multi-Status - сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности.

226 IM Used - заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров, с поддержкой дельта-кодирования.

3. Перенаправление

Коды этого класса сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило, по другому URI.

300 Multiple Choices - по указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю.

301 Moved Permanently - Перемещён на постоянной основе. Запрошенный URL документа был окончательно изменён на новый URI, указанный в поле Location заголовка.
Некоторые клиенты некорректно ведут себя при обработке данного кода.

302 Found, (Moved Temporarily) - Найдено. Запрошенный URL документа временно изменён и доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, при управляемом сервером согласовании содержимого.
Некоторые клиенты некорректно ведут себя при обработке данного кода.

303 See Other - документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом.

304 Not Modified - Не модифицировано. Сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента, клиент может продолжать использовать сохранённую версию ответа из кеширования. При этом сообщение сервера не должно содержать тела.

305 Use Proxy — запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси).

306 (Unused) (зарезервировано) - использовавшийся раньше код ответа, в настоящий момент зарезервирован.

307 Temporary Redirect - запрашиваемый ресурс на короткое время доступен по другому URI, указанный в поле Location заголовка.

4. Клиентские ошибки

Класс кодов 4xx предназначен для указания ошибок со стороны клиента. При использовании всех методов, кроме HEAD, сервер должен вернуть в теле сообщения гипертекстовое пояснение для пользователя.

400 Bad Request - Недействительный запрос. Сервер обнаружил в запросе клиента синтаксическую ошибку и не может корректно обработать полученные данные.

401 Unauthorized - Неавторизованно. Для доступа к запрашиваемому ресурсу и получения ответа на этот запрос требуется аутентификация (авторизация). В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Клиент может повторить запрос, включив в заголовок сообщения поле Authorization с требуемыми для аутентификации данными.

402 Payment Required - предполагается использовать в будущем. В настоящий момент не используется. Этот код предусмотрен для платных пользовательских сервисов, а не для хостинговых компаний. Имеется в виду, что эта ошибка не будет выдана хостинговым провайдером в случае просроченной оплаты его услуг.

403 Forbidden - Запрещено. Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу без возможности дальнейшей аутентификации.

404 Not Found - Не найдено. Самая распространенная ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Веб-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI.
Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы.

405 Method Not Allowed - Метод не разрешён. Указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Обязательные методы GET и HEAD не могут быть запрещены. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу. Если же указанный метод не применим на всём сервере, то клиенту нужно вернуть код 501 (Not Implemented).

406 Not Acceptable - запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD, то сервер должен вернуть список допустимых характеристик для данного ресурса.

407 Proxy Authentication Required - ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере.

408 Request Timeout - время ожидания сервером передачи от клиента истекло. Клиент может повторить аналогичный предыдущему запрос в любое время. Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT.

409 Conflict - запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT.

410 Gone - такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Серверу в этом случае неизвестно и местоположение альтернативного документа, например, копии).

411 Length Required - для указанного ресурса клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI. Такой ответ естественен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём. Тогда разумней будет проверить в самом начале заголовок Content-Length и сразу отказать в загрузке, чем провоцировать бессмысленную нагрузку, разрывая соединение, когда клиент действительно пришлёт слишком объёмное сообщение.

412 Precondition Failed - возвращается, если ни одно из условных полей заголовка запроса не было выполнено.

413 Request Entity Too Large - возвращается в случае, если сервер отказывается обработать запрос по причине слишком большого размера тела запроса. Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса. Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос.

414 Request-URL Too Long - сервер не может обработать запрос из-за слишком длинного указанного URL. Такую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET, а не POST.

415 Unsupported Media Type - по каким-то причинам сервер отказывается работать с указанным типом данных при данном методе.

416 Requested Range Not Satisfiable - в поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. Если клиент передал байтовый диапазон, то сервер может вернуть реальный размер в поле Content-Range заголовка. Данный ответ не следует использовать при передаче типа multipart/byteranges.

417 Expectation Failed - по каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса.

418 I'm a teapot - Этот код был введен в 1998 году как одна из традиционных первоапрельских шуток IETF в RFC 2324, Hyper Text Coffee Pot Control Protocol. Не ожидается, что данный код будет поддерживаться реальными серверами.

422 Unprocessable Entity - сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом.

423 Locked - целевой ресурс из запроса заблокирован от применения к нему указанного метода.

424 Failed Dependency - реализация текущего запроса может зависеть от успешности выполнения другой операции. Если она не выполнена и из-за этого нельзя выполнить текущий запрос, то сервер вернёт этот код.

425 Unordered Collection - используется в расширении WebDAV Advanced Collections Protocol[18]. Посылается, если клиент указал номер элемента в неупорядоченном списке, или запросил несколько элементов в порядке, отличающемся от серверного.

426 Upgrade Required - сервер указывает клиенту на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection.

428 Precondition Required - сервер указывает клиенту на необходимость использования в запросе заголовков условий, наподобие If-Match.

429 Too Many Requests - клиент попытался отправить слишком много запросов за короткое время, что может указывать, например, на попытку DoS-атаки. Может сопровождаться заголовком Retry-After, указывающим, через какое время можно повторить запрос.

431 Request Header Fields Too Large - Превышена допустимая длина заголовков. Сервер не обязан отвечать этим кодом, вместо этого он может просто сбросить соединение.

434 Requested host unavailable - Запрашиваемый адрес недоступен.

449 Retry With - возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request.

451 Unavailable For Legal Reasons - доступ к ресурсу закрыт по юридическим причинам, например, по требованию органов государственной власти или по требованию правообладателя в случае нарушения авторских прав.

456 Unrecoverable Error - возвращается сервером, если обработка запроса вызывает некорректируемые сбои в таблицах баз данных.

5. Серверные ошибки

Коды 5xx выделены под случаи неудачного выполнения операции по вине сервера. Для всех ситуаций, кроме использования метода HEAD, сервер должен включать в тело сообщения объяснение, которое клиент отобразит пользователю.

500 Internal Server Error - Внутренняя ошибка сервера. С которой столкнулся сервер и не смог её обработать в процессе запроса. И не входит в рамки остальных ошибок класса.

501 Not Implemented - Не реализовано. Сервер не поддерживает возможностей, необходимых для обработки запрашиваемого метода. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Методы GET и HEAD являются обязательными и не должны возвращать этот код. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405.

502 Bad Gateway - Плохой шлюз. Сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера.

503 Service Unavailable - Сервис недоступен. Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, отключение или перегрузка сервера и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным кажется сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов.

504 Gateway Timeout - тайм-аут шлюза. Сервер в роли шлюза или прокси-сервера не дождался ответа вовремя от внутренней службы вышестоящего сервера для завершения текущего запроса.

505 HTTP Version Not Supported - сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP.

506 Variant Also Negotiates - в результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается. (Экспериментальное)

507 Insufficient Storage - не хватает места для выполнения текущего запроса. Проблема может быть временной.

509 Bandwidth Limit Exceeded - используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру.

510 Not Extended - на сервере отсутствует расширение, которое желает использовать клиент. Сервер может дополнительно передать информацию о доступных ему расширениях.

511 Network Authentication Required - этот ответ посылается не сервером, которому был предназначен запрос, а сервером-посредником — например, сервером провайдера — в случае, если клиент должен сначала авторизоваться в сети, например, ввести пароль для платной точки доступа к Интернету. Предполагается, что в теле ответа будет возвращена Веб-форма авторизации или перенаправление на неё.

Классы состояния HTTP ответы сервера.

top.inoy.org ...