HTTP.Коды состояния

HTTP.Коды состояния

https://t.me/HotCheatSheet

Сегодня рассмотрим список кодов состояния HTTP. Тема не новая, но пытался собрать как можно больше кодов. Да не встретишь ты на своём пути 404, да будет освещать твою дорогу 200 OK =)

Описание кодов
1xx Информационные ответы

В этот класс выделены коды, информирующие о процессе передачи. При работе через протокол версии 1.0 сообщения с такими кодами должны игнорироваться. В версии 1.1 клиент должен быть готов принять этот класс сообщений как обычный ответ, но серверу отправлять что-либо не нужно. Сами сообщения от сервера содержат только стартовую строку ответа и, если требуется, несколько специфичных для ответа полей заголовка. Прокси-сервера подобные сообщения должны отправлять дальше от сервера к клиенту.

100 Continue

Сервер получил заголовки запросов, и клиент должен продолжить отправку тела запроса (в случае запроса, для которого необходимо отправить тело, например, запрос POST). Отправка большого тела запроса на сервер после отклонения запроса для несоответствующих заголовков будет неэффективной. Чтобы сервер проверял заголовки запроса, клиент должен отправить Expect: 100-continue в качестве заголовка в свой первоначальный запрос и получить ответный код состояния 100 Continue в ответ перед отправкой тела. Если клиент получает код ошибки, такой как 403 (Запрещенный) или 405 (Метод не разрешен), он не должен отправлять тело запроса. Ответ 417 Expectation Failed указывает на то, что запрос должен быть повторен без заголовка Expect, поскольку он указывает, что сервер не поддерживает ожидания (например, это относится к серверам HTTP/1.0).

101 Switching Protocols

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

102 Processing (WebDAV; RFC 2518)

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


2xx Успех

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

200 OK

Стандартный ответ для успешных запросов HTTP. Фактический ответ будет зависеть от используемого метода запроса. В запросе GET ответ будет содержать объект, соответствующий запрашиваемому ресурсу. В запросе POST ответ будет содержать объект, описывающий или содержащий результат действия.

201 Created

В результате успешного выполнения запроса был создан новый ресурс. Сервер может указать адреса (их может быть несколько) созданного ресурса в теле ответа, при этом предпочтительный адрес указывается в заголовке Location. Серверу рекомендуется указывать в теле ответа характеристики созданного ресурса и его адреса, формат тела ответа определяется заголовком Content-Type. При обработке запроса, новый ресурс должен быть создан до отправки ответа клиенту, иначе следует использовать ответ с кодом 202.

202 Accepted

Запрос был принят для обработки, но обработка еще не завершена. Запрос может или не может быть впоследствии применен, и может быть отклонен при обработке.

203 Non-Authoritative Information (Введено в HTTP/1.1)

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

204 No Content

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

205 Reset Content

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

206 Partial Content (RFC 7233)

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

207 Multi-Status (WebDAV; RFC 4918)

Следующее тело сообщения представляет собой XML-сообщение и может содержать несколько отдельных кодов ответов в зависимости от того, сколько суб-запросов было сделано.

208 Already Reported (WebDAV; RFC 5842)

Члены привязки DAV уже были перечислены в предыдущей части (multistatus) ответа и не включаются снова.

226 IM Used (RFC 3229)

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


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

Коды этого класса сообщают клиенту, что для успешного выполнения операции необходимо сделать другой запрос, как правило, по другому URI. Из данного класса пять кодов 301, 302, 303, 305 и 307 относятся непосредственно к перенаправлениям. Адрес, по которому клиенту следует произвести запрос, сервер указывает в заголовке Location. При этом допускается использование фрагментов в целевом URI.

300 Multiple Choices

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

301 Moved Permanently

Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Некоторые клиенты некорректно ведут себя при обработке данного кода.

302 Found, 302 Moved Temporarily

Это пример отраслевой практики, противоречащей стандарту. Спецификация HTTP / 1.0 (RFC 1945) требовала от клиента выполнения временной переадресации (исходная описательная фраза была «Moved Temporarily»), но популярные браузеры реализованы 302 с функциональностью 303. В дальнейшем, HTTP / 1.1 добавили коды статуса 303 и 307, чтобы различать два поведения. Однако некоторые веб-приложения и фреймворки используют код статуса 302, как если бы это были 303.

303 See Other (Введено в HTTP/1.1)

Ответ на запрос можно найти в другом URI, используя метод GET. Когда он получен в ответ на POST (или PUT / DELETE), клиент должен предположить, что сервер получил данные и должен выдать новый GET-запрос данному URI.

304 Not Modified (RFC 7232)

Указывает, что ресурс не был изменен с версии, указанной заголовками запроса If-Modified-Since или If-None-Match. В этом случае нет необходимости повторно передавать ресурс, поскольку клиент все еще имеет ранее загруженную копию.

305 Use Proxy (Введено в HTTP/1.1)

Запрошенный ресурс доступен только через прокси-сервер, адрес которого указан в ответе. Многие HTTP-клиенты (такие как Mozilla и Internet Explorer) неправильно обрабатывают ответы с этим кодом состояния, главным образом по соображениям безопасности.

306 Switch Proxy (зарезервирован)

Больше не используется. Первоначально подразумевалось: «Последующие запросы должны использовать указанный прокси». Код ответа в настоящий момент зарезервирован.

307 Temporary Redirect (Введено в RFC 2616 (обновление HTTP/1.1))

В этом случае запрос должен быть повторен с другим URI; однако будущие запросы должны по-прежнему использовать исходный URI. В отличие от того, как исторически было реализовано 302, метод запроса не может быть изменен при повторной выдаче первоначального запроса. Например, запрос POST должен быть повторен с использованием другого запроса POST.

308 Permanent Redirect (RFC 7538)

Запрос и все будущие запросы должны быть повторены с использованием другого URI. 307 и 308 параллельны поведению 302 и 301, но не позволяют изменять метод HTTP. Так, например, отправка формы на постоянно перенаправленный ресурс может продолжаться плавно.


4xx Ошибка клиента

Этот класс кода состояния предназначен для ситуаций, когда ошибка, по-видимому, вызвана клиентом. За исключением случаев, когда он отвечает на запрос HEAD, сервер должен включать в себя объект, содержащий объяснение ситуации ошибки, и является ли это временным или постоянным условием. Эти коды состояния применимы к любому методу запроса.

400 Bad Request

Сервер не может или не будет обрабатывать запрос из-за кажущейся ошибки клиента (например, искаженный синтаксис запроса, слишком большой размер, неправильное обращение к сообщениям запроса или маршрутизация ложных запросов).

401 Unauthorized (RFC 7235)

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

402 Payment Required

Зарезервировано для будущего использования. Первоначальное намерение состояло в том, что этот код может использоваться как часть какой-либо цифровой схемы денежных средств или микроплатежей, как это предлагается, например, GNU Taler , но этого еще не произошло, и этот код обычно не используется. API Google Developers API использует этот статус, если определенный разработчик превысил дневной лимит на запросы. Stripe API использует этот код для ошибок при обработке кредитных карт.

403 Forbidden

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

404 Not Found

Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URL. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы.

405 Method Not Allowed

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

406 Not Acceptable

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

407 Proxy Authentication Required (RFC 7235)

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

408 Request Timeout

Сервер ожидал запроса. Согласно спецификациям HTTP: «Клиент не выдал запрос в течение времени, когда сервер был готов ждать. Клиент МОЖЕТ повторить запрос без каких-либо изменений в любое другое время».

409 Conflict

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

410 Gone

Указывает, что запрошенный ресурс больше не доступен и больше не будет доступен. Это следует использовать, когда ресурс был умышленно удален и ресурс должен быть очищен. После получения кода состояния 410 клиент не должен запрашивать ресурс в будущем. Клиенты, такие как поисковые системы, должны удалить ресурс из своих индексов. Большинство случаев использования не требуют, чтобы клиенты и поисковые системы очищали ресурс, и вместо этого может использоваться «404 Not Found».

411 Length Required

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

412 Precondition Failed (RFC 7232)

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

413 Payload Too Large (RFC 7231)

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

414 URI Too Long (RFC 7231)

Предоставленный URI был слишком длинным для обработки сервера. Часто результат слишком большого количества данных кодируется как строка
запроса запроса GET, и в этом случае он должен быть преобразован в
запрос POST. Ранее назывался «Request-URI Too Long».

415 Unsupported Media Type

Объект запроса имеет тип носителя, который сервер или ресурс не поддерживает. Например, клиент загружает изображение как image / svg + xml, но сервер требует, чтобы изображения использовали другой формат.

416 Range Not Satisfiable (RFC 7233)

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

417 Expectation Failed

Сервер не может удовлетворять требованиям поля заголовка запроса Expect.

418 I'm a teapot (RFC 2324)

Этот код был определен в 1998 году как одна из традиционных шуток IETF April Fools, в RFC 2324, протокол управления потоком кофе в гипертекстовом режиме и, как ожидается, не будет реализована на реальных HTTP-серверах. RFC указывает, что этот код должен быть возвращен чайниками, которым необходимо заварить кофе. Этот статус HTTP используется как пасхальное яйцо на некоторых веб-сайтах, включая Google.com.

421 Misdirected Request (RFC 7540)

Запрос был направлен на сервер, который не может дать ответ. (например, из-за повторного использования соединения)

422 Unprocessable Entity (WebDAV; RFC 4918)

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

423 Locked (WebDAV; RFC 4918)

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

424 Failed Dependency (WebDAV; RFC 4918)

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

426 Upgrade Required

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

428 Precondition Required (RFC 6585)

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

429 Too Many Requests (RFC 6585)

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

431 Request Header Fields Too Large (RFC 6585)

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

451 Unavailable For Legal Reasons (RFC 7725)

Доступ к ресурсу закрыт по юридическим причинам, например, по требованию органов государственной власти или по требованию правообладателя в случае нарушения авторских прав. Введено в черновике IETF за авторством Google, при этом код ошибки является отсылкой к роману Рэя Брэдбери «451 градус по Фаренгейту».


5xx Ошибка сервера

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

500 Internal Server Error

Любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса.

501 Not Implemented

Сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405.

502 Bad Gateway

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

503 Service Unavailable

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

504 Gateway Timeout

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

505 HTTP Version Not Supported

Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP.

506 Variant Also Negotiates (RFC 2295)

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

507 Insufficient Storage (WebDAV; RFC 4918)

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

508 Loop Detected (WebDAV; RFC 5842)

Сервер обнаружил бесконечный цикл во время обработки запроса (отправленный вместо 208 Already Reported).

510 Not Extended (RFC 2774)

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

511 Network Authentication Required (RFC 6585)

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


Неофициальные коды

Следующие коды не указаны ни в одном стандарте.

103 Checkpoint

Используется в возобновляемых запросах для возобновления прерванных запросов PUT или POST.

103 Early Hints

Используется для возврата некоторых заголовков ответов до полного ответа HTTP. В настоящее время в черновом варианте.

420 Method Failure (Spring Framework)

Устаревший ответ, используемый Spring Framework, когда метод не прошел.

420 Enhance Your Calm (Twitter)

Возвращается по версии 1 API Twitter Search и Trends, когда клиент ограничен скоростью; версии 1.1 и более поздние используют вместо этого код ответа 429 Too Many Requests.

450 Blocked by Windows Parental Controls (Microsoft)

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

498 Invalid Token (Esri)

Возвращено ArcGIS для сервера. Код 498 указывает истекший или иным образом недействительный токен.

499 Token Required (Esri)

Возвращено ArcGIS для сервера. Код 499 указывает, что требуется токен, но он не был отправлен.

509 Bandwidth Limit Exceeded (Apache Web Server/cPanel)

Сервер превысил пропускную способность, указанную администратором сервера; это часто используется хостинг-провайдерами, чтобы ограничить пропускную способность клиентов.

530 Site is frozen

Используется веб-платформой Pantheon, чтобы указать сайт, который был заморожен из-за бездействия.

598 (Informal convention) Network read timeout error

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


Интернет-информационные сервисы

Веб-сервер Microsoft Internet Information Services расширяет пространство ошибок 4xx, чтобы сигнализировать об ошибках с запросом клиента.

440 Login Time-out

Сессия клиента истекла и должна снова войти в систему.

449 Retry With

Сервер не может выполнить запрос, потому что пользователь не предоставил требуемую информацию.

451 Redirect

Используется в Exchange ActiveSync, когда доступен более эффективный сервер или сервер не может получить доступ к почтовому ящику пользователей. Ожидается, что клиент повторно запустит операцию HTTP AutoDiscover, чтобы найти более подходящий сервер.


Nginx

Программное обеспечение веб-сервера nginx расширяет пространство ошибок 4xx, чтобы сигнализировать о проблемах с запросом клиента.

444 No Response

Используется для указания того, что сервер не передал информацию клиенту и не закрыл соединение.

495 SSL Certificate Error

Расширение кода ответа 400 Bad Request, используемого, когда клиент предоставил недействительный сертификат клиента.

496 SSL Certificate Required

Расширение кода ответа 400 Bad Request, используемого, когда требуется сертификат клиента, но не предоставлен.

497 HTTP Request Sent to HTTPS Port

Расширение кода ответа 400 Bad Request, используемого, когда клиент сделал HTTP-запрос порту, который прослушивает HTTPS-запросы.

499 Client Closed Request

Используется, когда клиент закрыл запрос, прежде чем сервер сможет отправить ответ.


Cloudflare

Служба обратного прокси-сервера Cloudflare расширяет пространство ошибок 5xx, чтобы сигнализировать о проблемах с исходным сервером.

520 Unknown Error

Ошибка 520 используется как «ответ для всех, когда исходный сервер возвращает что-то неожиданное», перечисляя сброс соединения, большие заголовки и пустые или недействительные ответы в качестве обычных триггеров.

521 Web Server Is Down

Возникает когда подключения CDN отклоняются веб-сервером; нестандартный код CloudFlare.

522 Connection Timed Out

Возникает когда CDN не удалось подключиться к веб-серверу; нестандартный код CloudFlare.

523 Origin Is Unreachable

Возникает когда веб-сервер недостижим; нестандартный код CloudFlare.

524 A Timeout Occurred

Возникает при истечении таймаута подключения между сервером CDN и веб-сервером; нестандартный код CloudFlare.

525 SSL Handshake Failed

Возникает при ошибке рукопожатия SSL между сервером CDN и веб-сервером; нестандартный код CloudFlare.

526 Invalid SSL Certificate

Cloudflare не смог проверить сертификат SSL / TLS, предоставленный исходным сервером.

527 Railgun Error

Ошибка 527 указывает, что тайм-аут запросов или неудача после установления соединения WAN.

Report Page