Коды ответов сервера: полный список
Коды ответов сервера: полный список
Когда браузер или поисковой робот обращаются к серверу с запросом, ему в ответ автоматически выдается определенный код с обозначением статуса. Всякий код состояния HTTP является трехзначным и может быть в пределах от 100 до 526. Диапазон периодически расширяют для описания каких-то новых состояний, но происходит такое нечасто, поэтому описанных в этой статье кодов ответов сервера будет достаточно в 99% случаев.
Группы ответов сервера
Существует 5 категорий ответов:
- Информационные (Informational) – в диапазоне от 100 до 105.
- Успешные (Success) – в диапазоне от 200 до 226.
- Перенаправление (Redirection) – от 300 до 307.
- Ошибки клиента (Client Error) – от 400 до 499.
- Ошибки сервера (Server Error) – от 500 до 526.
Рассмотрим подробнее самые распространенные коды каждой из этих категорий.
1xx: группа информационных ответов
- Код ответа Расшифровка ответа Версия HTTP
- 100 «Continue» Информирует о принятии сервером запроса и инициализации дальнейшей обработки. То есть клиенту дозволяется продолжить пересылку заголовков. HTTP/1.1
- 101 «Switching Protocols» Этот код ответа сервера указывает, что TCP-соединение следует использовать для другого протокола. В поле заголовка Update также обязательно указывается несколько подходящих протоколов. HTTP/1.1
- 102 «Processing» Сообщает об успешном принятии запроса, но также говорит о том, что на его обработку потребуется значительно больше времени, чем обычно. Если вы видите такой код – не спешите разрывать соединение с сервером, дождитесь завершения обработки. HTTP/1.1
- 103 «Early Hints» Этот код обеспечивает ранний возврат метаинформации – части заголовков. Используется в ситуациях, когда заголовки полного ответа невозможно сформировать быстро. HTTP/1.1
В ответ на информационные коды ничего отправлять на сервер не нужно, они нужны лишь для того, чтобы проинформировать принимающую сторону о своем статусе.
2xx: группа успешных ответов
- Код ответа Расшифровка ответа Версия HTTP
- 200 «OK» Информирует об успешном завершении обработки запроса. Если клиент запрашивал данные, их можно посмотреть в полученном заголовке или в теле ответа. HTTP/1.0 и более новые
- 201 «Created» Сообщает об успешном выполнении запроса о создании нового ресурса. Адрес нового ресурса прикрепляется к телу ответа. HTTP/1.0 и более новые
- 202 «Accepted» Принятие запроса в обработку без окончательного завершения. Клиент может не дожидаться полной передачи сообщения, так как этот процесс может занять длительное время. HTTP/1.0 и более новые
- 203 «Non-Authoritative Information» Этот код ответа сервера аналогичен 200 «ОК» с той разницей, что информация берется не из первоисточника, а потому её актуальность под вопросом. HTTP/1.0 и HTTP/1.1
- 204 «No Content» Успешная обработка запроса, но клиент получает только заголовки без содержимого. Сами заголовки можно использовать для обновления метаданных. HTTP/1.0 и более новые
- 205 «Reset Content» Только на HTTP/1.1
- 206 «Partial Content» Сигнализирует о частичном выполнении GET-запроса. При таком ответе заголовок Content-Range будет содержать один или несколько байтовых диапазонов содержимого. Только на HTTP/1.1
- 207 «Multi-Status» Сообщает об одновременной передаче сервером результатов нескольких независимых операций. Появился в WebDAV
3xx: сообщения о перенаправлении
Эта группа ответов сервера информирует о том, что для дальнейшего выполнения операции требуется инициировать другой запрос на определенный URL. Подходящий URL можно прочитать в заголовке Location.
- Код ответа Расшифровка ответа Версия HTTP
- 300 «Multiple Choice» На указанный URL-адрес имеется несколько вариантов предоставления ресурса по типу MIME, языку или другим критериям. В теле ответа сервер присылает список возможных ответов, из которых клиент должен выбрать наиболее подходящий. Используется крайне редко в связи с тем, что унифицированного метода выбора одного ответа не существует. HTTP/1.0 и более новые
- 301 «Moved Permanently» Запрашиваемый документ окончательно перенесен по новому URL-адресу. Сам адрес указывается в поле Location. HTTP/1.0 и более новые
- 302 «Found» Сообщает о временной доступности запрашиваемого документа по указанному URL-адресу, который также можно прочитать в поле Location. HTTP/1.0 и более новые
- 303 «See Other» Этот код ответа сервера призван перенаправить клиента на другой URL. Присылается в случае, если запрошенный документ временно доступен по другому адресу. HTTP/1.1 и более новые
- 304 «Not Modified» Сервер присылает этот код, когда клиент запрашивает документ методом GET, используя заголовок If-Modified-Since или If-None-Match. При этом сообщение сервера не должно содержать тела. Для просмотра интересующего документа следует отправить запрос на другой URL, указанный в заголовке Location. HTTP/1.0 и более новые
- 305 «Use Proxy» Запрос к интересующему ресурсу необходимо осуществлять через proxy-сервер, адрес которого можно найти в строке заголовка Location ответа сервера. HTTP/1.1 и более новые
- 306 «Switch Proxy» Запрос к ресурсу необходимо осуществлять через прокси, указанный сервером в заголовке ответа. На сегодняшний день код не используется. Только HTTP/1.1
- 307 «Temporary Redirect» Сообщает, что запрошенный ресурс был временно перемещен на URL-адрес, указанный в заголовке Location. Введен в RFC 2616 с обновлением HTTP/1.1
- 308 «Permanent Redirect» Сообщает, что запрошенный ресурс был перманентно, то есть навсегда, перемещен на URL-адрес, указанный в заголовке Location. Введен в RFC 7238
4xx: группа ответов об ошибках клиента
Коды из этой группы сообщают об ошибках на стороне клиента. Как правило, в теле сообщения указывается гипертекстовое пояснение для пользователя. Рассмотрим основные.
- Код ответа Расшифровка ответа Версия HTTP
- 400 «Bad Request» В запросе клиента обнаружена синтаксическая ошибка. HTTP/1.0 и выше
- 401 «Unauthorized» Чтобы получить доступ к ресурсу, необходимо пройти аутентификацию. HTTP/0.9 и выше
- 402 «Payment Required» Такой ответ можно получить от сервера с платным пользовательским сервисом. HTTP/0.9 и 1.1
- 403 «Forbidden» Запрос не может быть выполнен из-за установленных ограничений по уровню доступа. Проще говоря, запрос клиента не может быть выполнен из-за ограничений, установленных администратором или разработчиком софта. HTTP/1.0 и выше
- 404 «Not Found» Легендарная и хорошо известная всякому обывателю ошибка, возникающая в случае, если на запрашиваемом URL отсутствует какой-либо ресурс. HTTP/1.0 и выше
- 405 «Method Not Allowed» Метод клиента невозможно применить к данному ресурсу из-за ручной деактивации. Такой код ответа сервера может возвращаться клиенту в ответ на попытки получить доступ к ресурсам посредством методов GET или HEAD. HTTP/1.1 и выше
- 406 «Not Acceptable» Запрашиваемый URL не соответствует переданным в заголовке характеристикам. В ответе сервера можно прочитать список допустимых характеристик. HTTP/1.1 и выше
- 407 «Proxy Authentication Required» Чтобы получить доступ к ресурсу, необходимо пройти аутентификацию для прокси-сервера. HTTP/1.1 и выше
- 408 «Request Timeout» Выдается в случае, если время ожидания сервером ответа от клиента истекает. Часто встречается на сайтах с двухфакторной аутентификацией, на платежных системах и других ресурсах, где ответ от клиента на какой-либо запрос должен последовать в ограниченное время. HTTP/1.1 и выше
- 409 «Conflict» Сообщает о невозможности выполнения запроса по причине конфликтного обращения. Например, если клиент пытается как-либо изменить ресурс с помощью команды PUT. HTTP/1.1 и выше
- 410 «Gone» Присылается в случае, если ресурс, ранее находившийся по указанному URL, был перенесен на другой адрес. При этом новый адрес серверу неизвестен. HTTP/1.1 и выше
- 411 «Length Required» Клиенту следует указать Content-Length в заголовке запроса и затем повторно обратиться к серверу. HTTP/1.1 и выше
- 412 «Precondition Failed» Клиент указал в своих заголовках условия, которые сервер не может выполнить. HTTP/1.1 и выше
- 413 «Payload Too Large» Сообщает о превышении допустимого размера тела запроса. HTTP/1.1 и выше
- 414 «URI Too Long» Клиент указал слишком длинный URL-адрес. Если для передачи параметров вы используете метод GET, следует попробовать POST. HTTP/1.1 и выше
- 415 «Unsupported Media Type» Сервер отказывается обрабатывать данные этого типа в рамках применяемого метода. Можно попробовать использовать другой метод. HTTP/1.1 и выше
- 416 «Range Not Satisfiable» Диапазон, указанный в заголовке Range, не может быть выполнен. При передаче байтовых диапазонов сервер в ответ выдаст реальный размер в поле Content-Range заголовка, его можно использовать при передаче типа multipart/byteranges. HTTP/1.1 и выше
- 417 «Expectation Failed» Данные из поля Expect не удовлетворяют требованиям сервера, поэтому запрос не может быть выполнен. HTTP/1.1 и выше
- 418 «I’m a teapot» Шуточный код, происходящий из 1998 года. Современными серверами не поддерживается.
- 419 «Authentication Timeout» Используется как альтернатива 401, когда проверка подлинности пройдена, но доступ к определенным ресурсам на сервере отсутствует со стороны клиента. HTTP/1.1 и выше
- 421 «Misdirected Request» Сервер сообщает о неудачной попытке перенаправить запрос на другой сервер, который не способен дать ответ.
- 422 «Unprocessable Entity» Информирует об успешном принятии запроса и распознавании указанных видов данных. В то же время, из-за определенной логической ошибки провести операцию не может. Введен в WebDAV
- 423 «Locked» К запрашиваемому ресурсу нет доступа, так как используемый метод по отношению к нему неприменим. Введен в WebDAV
- 424 «Failed Dependency» Сообщает о невозможности выполнения запроса в связи с тем, что предыдущая операция, от которой зависел этот запрос, еще не была завершена. Введен в WebDAV
- 425 «Too Early» Сервер отказывается брать на себя риски по обработке «ранней информации». Введен в RFC 8470 с целью обеспечения защиты от атак повторения при использовании 0-RTT в TLS 1.3
- 426 «Upgrade Required» Клиенту необходимо обновить протокол. Детали содержатся в полях Upgrade и Connection. Введен в RFC 2817 для обеспечения возможности перехода к TLS через HTTP
- 428 «Precondition Required» Сообщает о необходимости использовать в запросе заголовков условий вроде If-Match Введен в RFC 6585
- 429 «Too Many Requests» Клиент пытается отправить слишком много запросов за короткий промежуток времени. Код ошибки призван защитить от DDoS. В теле сообщения можно также увидеть время, через которое можно будет отправить повторный запрос. Введен в RFC 6585
- 431 «Request Header Fields Too Large» Сообщает о превышении допустимой длины заголовка. Введен в RFC 6585
- 434 «Requested host unavailable» Свидетельствует о недоступности запрашиваемого адреса.
- 449 «Retry With» Чтобы выполнить запрос, серверу нужно больше информации.
- 451 «Unavailable For Legal Reasons» Целевой ресурс недоступен из-за юридических процедур. Можно столкнуться в тех случаях, когда сайт блокируется по решению суда или по требованию органов правопорядка.
5xx: группа ответов об ошибках сервера
Эта группа ответов сервера сообщает о случаях необработанных исключений, обнаруженных при попытке выполнения операции на стороне сервера.
- Код ответа Расшифровка ответа Версия HTTP
- 500 «Internal Server Error» Сообщает о внутренней ошибке на стороне сервера, выходящей за рамки остальных ошибок этой группы. HTTP/1.0 и выше
- 501 «Not Implemented» Сервер не может обработать запрос, так как не понимает указанный метод. Если сервер понимает метод, но отказывается выполнять запрос из-за внутренних ограничений, выдается код «405». HTTP/1.0 и выше
- 502 «Bad Gateway» Выдается, если запрос отправлен прокси-серверу или серверу, выполняющему роль шлюза. Как правило, «промежуточный» сервер попытается перенаправить запрос на вышестоящий сервер – и, если получает от него некорректный ответ, то клиенту выдается ошибка 502. HTTP/1.0 и выше
- 503 «Service Unavailable» На сервере временно отсутствует возможность обработки запросов в связи с техническим обслуживанием или перезагрузкой. HTTP/1.0 и выше
- 504 «Gateway Timeout» Выполняя роль шлюза или proxy-сервера, сервер не получил ответа от вышестоящего сервера за какой-то период времени. HTTP/1.1 и выше
- 505 «HTTP Version Not Supported» На сервере отсутствует поддержка протокола HTTP указанной версии. HTTP/1.1 и выше
- 507 «Insufficient Storage» Информирует о том, что на сервере недостаточно места для завершения операции Введен в WebDAV
- 508 «Loop Detected» Операция прервана по причине обнаружения бесконечного цикла при обработке запроса без ограничения глубины. Введен в WebDAV
- 509 «Bandwidth Limit Exceeded» Выдается в случае, если веб-площадка превысила установленные для неё ограничения по трафику. В этом случае стоит обратиться напрямую к хостинг-провайдеру.
- 510 «Not Extended» На сервере отсутствует расширение, которое пытается использовать клиент в своем обращении. Как правило, ответ сервера содержит данные о доступных расширениях на стороне сервера.
- 511 «Network Authentication Required» Сообщает о необходимости авторизации перед тем, как можно будет выполнить указанный запрос. Введен стандартом RFC 6585
- 520 «Unknown Error» Сервер CDN не может обработать ошибку сервера.
- 521 «Web Server Is Down» Веб-сервер отклоняет подключение CDN.
- 522 «Connection Timed Out» CDN не удается подключиться к веб-серверу.
- 525 «SSL Handshake Failed» Ошибка рукопожатия SSL между web-сервером и сервером CDN.
- 526 «Invalid SSL Certificate» Неудачная попытка подтверждения сертификата шифрования SSL.