HTTPS Status Codes — это стандартизированные коды, которые веб-сервер возвращает в ответ на HTTP-запросы сетевых клиентов. Они помогают понять статус: было ли соединение успешным или такой страницы не существует, есть ли перенаправление или превышен таймаут. В этой статье — подробный список кодов ответов с понятным описанием.
Содержание:
1. 1xx: Informational (информационные)
2. 2xx: Success (успешно)
3. 3xx: Redirection (перенаправление)
4. 4xx: Client Error — ошибки со стороны клиента
5. 5xx: Server Error (ошибка сервера) — ошибки на стороне сервера
Заключение
В этом диапазоне возвращаются коды, которые информируют о процессе передачи данных. В версии HTTP 1.0 их следует игнорировать. В версии HTTP 1.1 этот класс сообщений принимают как обычный ответ, но отправлять серверу ничего не нужно.
Код | Название | Описание | Версия |
100 | Continue | Промежуточный ответ. Сообщает клиенту, что ему следует дальше пересылать заголовки. Если запрос уже выполнен, то ответ с кодом 100 можно игнорировать. | HTTP/1.1 |
101 | Switching Protocol | Сервер предлагает изменить протокол. В ответе он предоставляет доступные варианты, которые указываются в заголовке Upgrade. Клиент может послать новый запрос, выбрав один из предложенных протоколов. | HTTP/1.1 |
102 | Processing | Сервер обрабатывает запрос. | HTTP/1.1 |
103 | Early Hints | Сервер сообщает ресурсы, которые доступны для ранней загрузки, пока готовится основной ответ. | HTTP/1.1 |
Коды в этом диапазоне сообщают, что запрос клиента получен, понят и принят.
Код | Название | Описание | Версия |
200 | OK | Успешное выполнение запроса. Информация зависит от метода, переданного клиентом. | HTTP/0.9 и выше |
201 | Created | Сервер выполнил запрос и создал новый ресурс. Стандартный ответ для методов POST и PUT. | HTTP/0.9 и выше |
202 | Accepted | Сервер принял запрос, но еще не обработал его. Не дает гарантий, что запрос успешно выполнится. Цель ответа — уведомить клиента, что запрос принят. | HTTP/0.9 и выше |
203 | Non-Authoritative Information | Отображается информация не из оригинального источника. Например, это данные из кеша или резервной копии, которые могли устареть. | HTTP/0.9 и 1.1 |
204 | No Content | Запрос обработан, в ответе передаются только заголовки без тела сообщения. Например, при выполнении метода DELETE. В ответе также может быть информация, которая не отличается от переданной клиентом. | HTTP/0.9 и выше |
205 | Reset Content | Сервер обработал запрос и призывает клиента сбросить отправленные данные. | HTTP/0.9 и 1.1 |
206 | Partial Content | Сервер выполнил часть GET-запроса. В ответ он передает ту часть, которую клиент указал в заголовке. | HTTP/0.9 и 1.1 |
207 | Multi-Status (WebDAV) | Сервер передает результаты выполнения нескольких операций. | RFC 4918 |
208 | Already Reported (WebDAV) | Включен в ответ 207. | RFC 4918 |
226 | IM Used | Сервер принял заголовок A-IM и возвращает содержимое, учитывая параметры. | HTTP/1.1 |
Коды в этом диапазоне сообщают, что для успешного выполнения действия необходимо сделать другой запрос. Как правило, достаточно изменить URL. Перенаправление может выполняться и без запроса пользователя, если второй ресурс запрашивается методом GET или HEAD.
Код | Название | Описание | Версия |
300 | Multiple Choices | У запрошенного ресурса множество представлений. Каждое из них имеет собственное расположение. Вместе с ответом сервер показывает список альтернативных ресурсов. Клиент может выбрать вариант автоматически или предоставить выбор пользователю. | HTTP/1.0 и выше |
301 | Moved Permanently | Запрошенный документ перенесен на постоянной основе на другой URL. Будущие обращения должны выполняться по URL, который возвращается в ответе.Ответ по умолчанию кешируется. | HTTP/0.9 и выше |
302 | Found | Запрошенный ресурс временно перемещен на другой URL. Но клиенту следует использовать тот же URL, так как в любой момент перенаправление может измениться. По умолчанию ответ кешируется. | HTTP/0.9 и выше |
303 | See Other | Документ по указанному адресу может быть доступен по другому URL. Чтобы найти его, клиент должен передать в Location метод GET. Этот код появился вместе с 307, чтобы исключить неоднозначные ситуации. Сервер, отдавая код 303, уверен, что следующий ресурс будет запрошен методом GET. | HTTP/0.9 и выше |
304 | Not Modified | Сервер возвращает код 304, когда клиент запрашивает ресурс методом GET и использует заголовок If-Modified-Since или If-None-Match, но документ не изменен. В сообщении сервера приходит только заголовок, тела нет. | HTTP/0.9 и выше |
305 | Use Proxy | Для доступа к запрошенному ресурсу необходимо использовать прокси-сервер, который указан в Location. Многие HTTP-клиенты обрабатывают такой запрос некорректно по соображениям безопасности. В их числе — Mozilla Firefox и Internet Explorer. | HTTP/1.1 |
306 | (Unused) | Код больше не используется, хотя был зарезервирован в ранних спецификациях. | HTTP/1.1 |
307 | Temporary Redirect | Запрошенный ресурс временно находится на другом URL. Так как перенаправление может измениться в любой момент, клиенту следует продолжать использовать запрос URL дальше. Ответ по умолчанию не кешируются. Чтобы кешировать данные, в заголовках Cache-Control или Expires нужно прямо это указать. | HTTP/1.1 |
308 | Permanent Redirect (experimental) | Сервер сообщает, что клиенту нужно повторить запрос на другой URL. Код ответа говорит о том, что ресурс перенаправлен на постоянной основе. Он находится в другом URL, который указан в заголовке Location. | Черновик спецификации |
Сервер не обработал запрос из-за синтаксической ошибки. Например, не хватает данных или есть проблемы с валидацией домена. Клиенту не следует повторять запрос без изменений, так как это снова приведет к появлению ошибки 400.
Код | Название | Версия |
400 | Bad Request | HTTP/0.9 и выше |
401 | Unauthorized | HTTP/0.9 и выше |
402 | Payment Required | HTTP/0.9 и 1.1 |
403 | Forbidden | HTTP/0.9 и выше |
404 | Not Found | HTTP/0.9 и выше |
405 | Method Not Allowed | HTTP/1.1 |
406 | Not Acceptable | HTTP/1.1 |
407 | Proxy Authentication Required | HTTP/1.1 |
408 | Request Timeout | HTTP/1.1 |
409 | Conflict | HTTP/1.1 |
410 | Gone | HTTP/1.1 |
411 | Length Required | HTTP/1.1 |
412 | Precondition Failed | HTTP/1.1 |
413 | Request Entity Too Large | HTTP/1.1 |
414 | Request-URL Too Long | HTTP/1.1 |
415 | Unsupported Media Type | HTTP/1.1 |
416 | Requested Range Not Satisfiable | HTTP/1.1 |
417 | Expectation Failed | HTTP/1.1 |
418 | I’m a teapot (RFC 2324) | RFC 2324 |
420 | Enhance Your Calm (Twitter) | |
422 | Unprocessable Entity (WebDAV) | RFC 4918 |
423 | Locked (WebDAV) | RFC 4918 |
424 | Failed Dependency (WebDAV) | RFC 4918 |
425 | Reserved for WebDAV | — |
426 | Upgrade Required | RFC 7231 |
428 | Precondition Required | RFC 6585 |
429 | Too Many Requests | RFC 6585 |
431 | Request Header Fields Too Large | RFC 6585 |
444 | No Response (Nginx) | Nginx |
449 | Retry With (Microsoft) | Microsoft |
450 | Blocked by Windows Parental Controls (Microsoft) | Microsoft |
451 | Unavailable For Legal Reasons | RFC 7725 |
499 | Client Closed Request (Nginx) | Nginx |
Чтобы выполнить запрос, пользователь должен пройти аутентификацию. В заголовке ответа сервер передает перечень условий для аутентификации. Клиент может выполнить запрос повторно, добавив в него требуемые данные. Если такая информация изначально была в запросе, то ошибка 401 показывает, что авторизация отклонена.
Код зарезервировали для использования в будущем. В настоящий момент он не дает никакую полезную информацию. Код предусмотрен для платных пользовательских сервисов, а не для хостингов.
Сервер понял, что от него хочет пользователь, но отказывается выполнять запрос. Причина — у клиента ограничен доступ к запрашиваемому ресурсу. Если для доступа нужна аутентификация через HTTP, то сервер вернет ошибку 401 или 407.
Ошибка 403 говорит о том, что ограничения задал администратора сервера или разработчик веб-приложения. Обычно ошибка появляется при попытке открыть системные ресурсы.
По указанному URL нет ресурсов. Это самая распространенная ошибка в интернете. Она появляется, когда пользователь, например, вводит неправильный адрес страницы. Еще одна причина — страница была по этому адресу, но затем ее удалили.
Также популярный статус 404 используют для маскировки, когда хотят скрыть истинную причину отказа от обработки запроса. Например, из соображений безопасности вместо 403 ошибки веб-приложения могут отдавать 404.
Указанный метод нельзя применить к ресурсу. В ответе содержится список разрешенных методов. Сервер возвращает ошибку 405, если ему знаком переданный клиентом метод, но он не применяет его к указанному ресурсу. Если метод не применяется на всем сервере, то нужно возвращать ошибку 501.
Запрошенный ресурс не отвечает характеристикам, которые клиент передал в заголовках запроса. Если в запросе указан не метод HEAD
, то сервер в ответе возвращает список допустимых характеристик.
Код аналогичен 401, но сообщает, что пользователь должен пройти авторизацию через прокси. Прокси-сервер возвращает заголовок, в котором содержится запрос ресурса. Клиент может повторить запрос, указав в нем данные для авторизации.
Клиент не отправил запрос в тот промежуток времени, когда сервер его ждал. Повторить запрос можно в любое время. Например, такая ситуация возникает при использовании методов POST
и PUT
. Источник данных перестает отвечать, сервер ждет продолжения, но через какое-то время прерывает соединение. Ответ не возвращается, если клиент принудительно остановил передачу данных.
Конфликт в текущем состоянии ресурса мешает обработать запрос. Код возвращается только в тех случаях, когда ожидается, что пользователь в состоянии сам устранить проблему, после чего повторить запрос.
В идеале ответ также содержит информацию, которая помогает разрешить конфликт. Подобные проблемы возникают, например, при использовании метода PUT
в случае, если версии отличаются.
Ресурс недоступен на сервере и новый адрес его местоположения неизвестен. Предполагается, что это постоянное состояние. Если сервер не знает или не может определить, постоянное это состояние или временное, он возвращает ошибку 404. Ответ 410 можно кешировать до тех пор, пока не появится другая информация.
Сервер не принимает запрос, если в заголовке не указан Content-Length
. Без заполнения этого поля нет смысле делать запрос повторно. Такой ответ возвращается при использовании методов POST
и PUT
.
Стандартная ситуация — при загрузке файлов оказывается, что на сервер стоит ограничение на объем. В таком случае разумнее сразу сообщить клиенту о превышении ограничения, разорвав соединение до начала загрузки.
Ответ с кодом 412 возвращается, если не было выполнено ни одно из условий, указанных в заголовке.
Сервер отказался обрабатывать запрос из-за слишком большого размера его тела. Чтобы прекратить дальнейшую передачу, сервер может закрыть соединение.
Сервер отказался обрабатывать запрос из-за слишком длинного URL. Это редкая ошибка, которая встречается, когда клиент передает параметры методом GET
, а не POST
. В итоге они все записываются в URL, который становится слишком длинным для обработки. Также ошибка используется для защиты от атак.
Сервер отказался обрабатывать запрос, так как в его теле содержатся данные с неподдерживаемым форматом. Например, клиент пытается передать на сервер изображение, а сервер ожидает текстовый файл.
Сервер возвращает ошибку, если ни одно из значений в заголовке Range
запроса не совпало с размером выбранного ресурса, при этом в запросе не было заголовка If-Range
. Например, клиент запрашивает часть файла, но сервер не может ее передать, потому что она находится за пределами конца файла.
Сервер не удовлетворяет значению поля Expect
в заголовке запроса. Если ответ приходит от прокси, это значит, что он уверен в том, что вышестоящий сервер не сможет удовлетворить этот запрос клиента.
Код появился 1 апреля 1998 года как шутка. Ожидалось, что он не будет поддерживаться реальными серверами. Однако реализация кода состояния 418 существует. Например, Nginx использует его для имитации goto-подобного поведения.
Twitter Search и Trends API возвращают код состояния 420, когда клиент отправляет слишком много запросов. Этот номер использует только Twitter. Большинство серверов сигнализирует о большом количестве запросов ошибкой с номером 429.
Сервер возвращает этот код, если синтаксически запрос был правильным, указанный вид данных поддерживается, но выполнить инструкции невозможно. Например, это может быть связано с семантическими ошибками.
Статус говорит о том, что целевой ресурс недоступен для указанного метода. В ответе должно содержаться предусловие или постусловие, например, ‘lock-token-submitted’ или ‘no-conflicting-lock’.
Статус 424 возвращается, если метод невозможно применить к ресурсу, так как запрошенное действие зависит от другого действия, выполнить которое не удалось.
Статус зарезервирован для проекта WebDAV Advanced Collections Protocol.
Вместе с кодом 426 сервер отправляет, какие именно расширения используются для доступа к ресурсу. Клиент должен выбрать подходящий протокол.
Исходный сервер требует, чтобы запрос был условным. Благодаря этому статусу можно предотвратить ситуацию, когда клиент получает состояние ресурса, изменяет его и отправляет обратно, при этом третья сторона меняет состояние на сервере, что приводит к конфликту.
Пользователь отправил слишком много запросов в указанный промежуток времени. В ответе должна быть информация об ограничениях. При этом серверы не обязаны использовать код 429, так как каждый ответ потребляет ресурсы. Вместо возвращения ошибки можно, например, разрывать соединение.
Сервер не обрабатывает запрос, потому что поля его заголовка слишком большие. После их уменьшения запрос можно повторить. Разработчики также использует этот ответ в том случае, если одно из полей заголовка повреждено. В этом случае необходимо указывать, какое именно поле стало причиной возвращения ошибки.
Код состояния, введенный Nginx. Он сигнализирует, что сервер не вернул данные и закрыл соединение. Используется, например, для защиты от вредоносных программ.
Расширение Microsoft, которое сообщает, что необходимо выполнить определенные действия, а затем повторить запрос.
Это расширение предложила компания Microsoft для лучшей работы функции родительского контроля. Если на Windows включен родительский контроль, то статус 450 появляется при попытке клиента перейти на запрещенную веб-страницу.
Сервер сообщает, что доступ к ресурсу закрыли по юридическим причинам. Наиболее близкий код — 403. 451 тоже сигнализирует, что сервер понял запрос, но отказывается его обрабатывать, например, из-за судебного запрета или по требованию органов государственной власти. Код состояния предложен Google в черновике IETF.
Этот код использует веб-сервер Nginx. Разработчики ввели его для логирования случаев, когда клиент закрывает соединения во время обработки запроса. Из-за закрытия соединения сервер не отправляет заголовок HTTP в ответ.
Коды из этого диапазона возвращаются в случаях, когда сервер знает, что произошла ошибка или не может обработать запрос. При использовании всех методов, кроме HEAD, в теле ответа указывается объяснение ошибки.
Код | Название | Версия |
500 | Internal Server Error | HTTP/0.9 и выше |
501 | Not Implemented | HTTP/0.9 и выше |
502 | Bad Gateway | HTTP/0.9 и выше |
503 | Service Unavailable | HTTP/0.9 и выше |
504 | Gateway Timeout | HTTP/1.1 |
505 | HTTP Version Not Supported | HTTP/1.1 |
506 | Variant Also Negotiates (Experimental) | RFC 2295 |
507 | Insufficient Storage (WebDAV) | RFC 4918 |
508 | Loop Detected (WebDAV) | RFC 5842 |
509 | Bandwidth Limit Exceeded (Apache) | Только cPanel |
510 | Not Extended | RFC 2774 |
511 | Network Authentication Required | RFC 6585 |
598 | Network read timeout error | — |
599 | Network connect timeout error | — |
Сервер не обработал запрос, потому что столкнулся с неизвестными условиями. Универсальный код, который сообщает об исключении на стороне сервера.
Сервер не может обработать запрос, потому что у него нет такой функции. Типичный ответ для ситуации, когда сервер не понимает метод. Иногда разработчики дописывают к этому статусу сообщение в духе «Скоро такая возможность появится» (если планируют ее внедрить).
Сервер играл роль прокси-сервера или шлюза и получил некорректный ответ от вышестоящего сервера.
Сервер не обработал запрос из-за технических работ или перезагрузки. Если время восстановления известно, можно передать его в заголовке Retry-After.
Сервер в роли прокси-сервера или шлюза не дождался ответа от вышестоящего сервера в рамках таймаута. Некоторые прокси возвращают статусы 400 и 500, когда DNS-запрос обрабатывается дольше таймаута.
Сервер не поддерживает или отказывается поддерживать версию HTTP, которую клиент передал в заголовке запроса. В ответе должно быть описание того, почему версия не поддерживается.
Внутренняя ошибка конфигурации, из-за которой сервер указывает сам на себя.
Нет места для успешного выполнения запроса, некуда сохранить представление.
При выполнении запроса сервер обнаружил бесконечный цикл.
Веб-площадка превысила лимит на потребление трафика. Введен панелью управления хостингом cPanel, используется только ей.
Не соблюдена политика доступа. Сервер в ответ должен прислать информацию, которая поможет клиенту отправить расширенный запрос.
Чтобы получить доступ к сети, клиенту нужно авторизоваться. В ответе должна содержаться ссылка на форму авторизации. Ответ посылает не сервер, которому предназначался запрос, а сервер-посредник — например, принадлежащий провайдеру.
Код не описан в стандарте, но используется некоторыми прокси для информирования об истечении таймаута при чтении.
Код не описан в стандарте, но используется некоторыми прокси для информирования об истечении таймаута соединения.
Необязательно помнить все коды статусов ответов. Самые распространенные вроде 200, 404, 403, 504 и так останутся в голове. Описания остальных ответов всегда можно посмотреть в документации.
Если хотите больше узнать о протоколе HTTP, его методах и кодах ответа, посмотрите это дополнительное видео:
Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…
Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…
Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…
В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…
Скрипт (англ. — сценарий), — это небольшая программа, как правило, для веб-интерфейса, выполняющая определенную задачу.…
Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…