Код ответа сервера — это трёхзначное число, которое отдает сервер браузеру пользователя на его запрос, тем самым информируя его о результате обработки данного запроса. Зачастую вместе с цифровым кодом выдается и краткое описание ответа на английском языке.
Тот или иной ответ от сервера можно сравнить с ответом оператора при наборе любого номера телефона — вы можете услышать, что абонент занят, вне зоны действия или номер вовсе не существует. Все ответы HTTP делятся на пять категорий.
Классификация кодов ответа от сервера
Для классификации коды были сгруппированы в соответствии с основным значением и разбиты на так называемые классы состояния. Разновидность класса зашифрована в первой цифре ответа, которая и определяет состояние страницы. Две другие цифры раскрывают подробности.
Классификация кодов ответов серверов:
- 1хх — информационные коды (Informational), которые указывают, что запрос принят и выполняется. Являются временными кодами.
- 2хх — коды успешной обработки запросов (Success). Означают, что запрос успешно принят и обработан. Проще говоря, страница существует, с ней все в порядке.
- 3хх — коды перенаправлений (Redirection). Указывают, что для осуществления запроса нужно выполнить дополнительное действие - перенаправление на другой URL.
- 4хх — коды, которые указывают на проблему со стороны клиента (Client Error). Например, запрашиваемая страница не найдена (неверный URL) или запрос имеет ошибку.
- 5хх — ошибки со стороны сервера (Server Error). Возникают, когда сервер не может обработать допустимый запрос по какой-либо причине.
Набор кодов состояния является стандартом. Все коды описаны в серии пронумерованных информационных документов интернета RFC. Введение новых кодов допускается, но лишь после согласования с IETF — Инженерным советом Интернета.
Коды 1xx (информационные сообщения)
Они не видны пользователю и используются, чтобы донести до браузера определенную информацию. Обычно после этих сообщений сервер продолжает взаимодействие с браузером.
Код | Текстовое сообщение | Значение |
100 | Continue / Продолжайте | Всё в порядке, сервер принял запрос браузера, и скоро последует ответ. На это сообщение реагировать не нужно. |
101 | Switching Protocols / Переключение протоколов | Этот код сервер отправляет браузеру в ответ на предложение переключиться на более подходящий протокол — например, WebSocket вместо HTTP. Своим ответом сервер показывает, что переключился и указывает в заголовке Upgrade название протокола. |
102 | Processing / В процессе | Код появляется, когда запрос получен, но для его обработки требуется время. После получения сообщения 102 браузер «понимает», что всё в порядке, сервер активен и скоро даст ответ. Серверу рекомендуется отправлять этот код, если время ожидания — более 20 секунд. |
103 | Early Hints / Предварительный ответ | Код показывает, что сервер еще обрабатывает запрос, но в ответе он отправляет браузеру «подсказки» — адрес сайта или ссылки на ресурсы, которые нужно будет загрузить. То есть браузер уже может «подготовиться» к получению полного ответа, чтобы быстрее завершить операцию. |
Коды 2xx (успешно обработанные запросы)
Ответы этой категории говорят о том, что запрос успешно принят и обработан. Иногда они могут содержать дополнительную информацию — например, что нужный элемент преобразован, или в запросе содержится кэшированная версия. В любом случае, коды 2хх сигнализируют, что запрос успешно выполнен.
Код | Текстовое сообщение | Значение |
200 | OK / Успех | Запрос успешно обработан и принят. То есть пользователь будет направлен на страницу, которую запрашивал, или получит нужные данные. |
201 | Created / Создано | Запрос успешно выполнен, и создана новая сущность — например, страница сайта или заказ в интернет-магазине. В теле ответа указывается адрес нового ресурса или его характеристики. |
202 | Accepted / Принято | Запрос принят и одобрен, но операция пока идет. Код отправляется, когда выполнение запроса требует длительного времени — например, если нужно загрузить на сайт большой объем контента. После завершения операции браузер получит либо код 200 (ОК), либо один из кодов-ошибок, если что-то пошло не так. |
203 | Non-Authoritative Information / Информация не авторитетна | Запрос обработан, но информация для его выполнения была взята не из исходного сервера, а из другого источника (например, резервной копии или кэша). Поэтому она может быть неактуальной. Это происходит, например, когда браузер запрашивает информацию, которая была удалена с исходного сервера, но сохранилась в кэше. |
204 | No Content / Нет содержимого | Запрос успешно обработан, но в ответе нет содержимого — только заголовки, в которых может быть важная информация. Ответ отправляется, например, когда пользователь удаляет страницу — раз контента нет, то браузер получит ответ 204. |
205 | Reset Content / Сбросить содержимое | Запрос успешно выполнен, и браузер должен сбросить введенный контент. Это происходит, например, когда пользователь заполнил форму на сайте и нажал «Отправить». Код 205 подскажет браузеру, что нужно очистить форму, если вдруг пользователь захочет отправить другие данные. |
206 | Partial Content / Частичное содержимое | Код применяется, если пользователь запросил часть контента — например, только первое видео со страницы. |
207 | Multi-Status / Мультистатус | В ответе передается несколько статусов — в его теле могут быть другие сообщения с кодами 1хх, 2хх и т.д. |
208 | Already Reported / Уже сообщалось | Это дополнительный код, который используется вместе с кодом 207 (Мультистатус), чтобы избежать конфликтов между запросами, а тело ответа было короче. |
226 | IM Used / Использовано IM | Запрос успешно выполнен, но элемент недоступен в текущем состоянии и отправлен после совершения над ним определенных манипуляций. В некоторых случаях, чтобы доставить элемент пользователю, нужно будет его преобразовать. |
Коды 3xx (перенаправление)
Коды показывают, что для успешного выполнения запроса нужно выполнить какие-либо действия — выбрать нужный URL или перейти на другой адрес. Чаще это происходит автоматически, но иногда нужно подтверждение пользователя.
Код | Текстовое сообщение | Значение |
300 | Multiple Choices / Множественный выбор | По данному запросу есть несколько вариантов URL. Пользователь или браузер должен выбрать один из них. |
301 | Moved Permanently / Перемещено навсегда | Такой ответ придет при попытке зайти на удаленную страницу, после этого браузер должен запросить новый адрес. Некоторые браузеры некорректно ведут себя после получения кода, поэтому вместо него чаще используется 308. |
302 | Found / Найдено, Moved Temporarily / Временно перемещено | Код отправляется, если объект временно отправлен на другой адрес — например, когда на сервере идут технические работы. Некоторые браузеры некорректно себя ведут после получения кода, поэтому вместо него чаще используется 303 или 307. |
303 | See Other / Смотреть другое | Объект перемещен, и браузер должен запросить его адрес через метод GET. |
304 | Not Modified / Не изменен | Запрашиваемый объект не изменялся с момента последнего запроса. Сервер использует такой ответ, чтобы сокращать время на загрузку ресурса — обновляются только измененные элементы. |
305 | Use Proxy / Используйте прокси | Объект доступен только через прокси-сервер. Данные прокси указываются в заголовке ответа. |
307 | Temporary Redirect / Временное перенаправление | Объект временно перемещен, и браузер должен запросить его адрес, используя тот же способ, что и до этого (GET или POST). |
308 | Permanent Redirect / Постоянное перенаправление | Объект перемещен навсегда, и браузер должен запросить его адрес, используя тот же способ, что и до этого (GET или POST). |
Коды 4xx (ошибки со стороны клиента)
Мы наконец подобрались непосредственно к ошибкам. Ответы с кодом 4хх говорят о том, что сервер не может обработать запрос по вине клиента — например, на его стороне плохое соединение, или пользователь ввел неправильный адрес. Такие ошибки пользователь видит на своем экране. Некоторые требуют определенных действий, а другие полностью запрещают доступ к документу.
Часть ошибок требует от пользователя базового знания HTTP — например, в ответе нужно заполнить заголовки.
Код | Текстовое сообщение | Значение |
400 | Bad Request / Неправильный запрос | В запросе клиента есть синтаксическая ошибка. |
401 | Unauthorized / Неавторизованный запрос | Чтобы получить доступ к информации, нужно пройти авторизацию |
402 | Зарезервирован для использования в будущем. | |
403 | Forbidden / Запрещено | В отличие от ошибки 401, которая требует пройти авторизацию, этот код говорит о полном запрете доступа к ресурсу. Например, если вы заходите с определенного IP или геолокации. |
404 | Not Found / Не найдено | Запрос сформулирован корректно и обработан, но объект не найден — возможно, страница удалена или перемещена, но серверу неизвестно, куда. |
405 | Method Not Allowed / Метод не разрешен | Метод запроса не разрешено использовать для этого объекта. В заголовке ответа сервер указывает разрешенные методы. |
406 | Not Acceptable / Не применимо | Запрос обработан, но сервер не может вернуть корректный ответ, потому что клиент его не распознает. Проблема может быть в формате страницы или кодировки. Такая ошибка используется редко — всё же разработчики стараются предоставить пользователю контент хоть в каком-то виде. |
407 | Proxy Authentication Required / Требуется аутентификация прокси | Код ошибки похож на 401, но здесь авторизация требуется для прокси. |
408 | Request Timeout / Время ожидания истекло
| Сервер разорвал соединение после долгого ожидания ответа от клиента. У каждого сервера свой таймаут ожидания. |
409 | Conflict / Конфликт | Запрос не может быть выполнен, потому что конфликтует с политикой сервера. Например, если два пользователя пытаются создать файлы с одинаковыми именами. |
410 | Gone / Удален | Объект точно существовал раньше, но был удален, и сервер не знает его новый адрес. Эта ошибка точнее описывает состояние объекта, чем 404. |
411 | Length Required / Требуется указать длину | Для доступа к объекту необходимо заполнить заголовок Content-Length. |
412 | Precondition Failed / Ложное условие
| Не были выполнены условия заполнения HTTP-заголовков. |
413 | Payload Too Large / Полезная нагрузка слишком велика | Тело запроса слишком большое, и сервер отказывается его обработать. |
414 | URL Too Long / URL слишком длинный | Адрес ресурса в запросе очень большой — такая ошибка появляется при попытке передать длинный URL через GET-запрос. |
415 | Unsupported Media Type / Тип медиа не поддерживается | Клиент пытается загрузить на сервер неподдерживаемый тип изображений, аудио или видео. |
416 | Range Not Satisfiable / Диапазон не достижим | Клиент запрашивает определенные данные, но нужные объекты на сервере не соответствуют запросу. Например, клиент запросил документ размером 900 байт, а на сервере он весит 200 байт, потому что был поврежден в процессе загрузки. Соответственно, сервер не выдаст документ браузеру и отправит код 416. |
417 | Expectation Failed / Значение Expect не может быть обработано
| Сервер не может обработать поле Expect. Такое случается, если вы используете прокси-сервер, который не поддерживает HTTP. Можно попробовать отправить серверу запрос без этого поля. |
418 | I’m a teapot / Я — чайник | Код-шутка, был придуман в 1998 году. Используется как «пасхалка» на некоторых серверах. |
419 | Authentication Timeout / Время ожидания аутентификации истекло | Может использоваться в дополнение к коду 401 для тех ресурсов, где аутентификации клиента не хватает для полноценного доступа. |
421 | Misdirected Request / Неверно адресованный запрос | Запрос перенаправлен на сервер, который не смог ответить. |
422 | Unprocessable Entity / Необрабатываемый экземпляр | Сервер успешно принял и распознал содержимое, но не может произвести операцию из-за логической ошибки. Например, если в теле запроса содержится синтаксически корректный XML-документ, но семантически ошибочные XML-инструкции. |
423 | Locked / Заблокировано | Ресурс из запроса заблокирован из-за использования метода запроса. Это случается, например, если клиент хочет отредактировать ресурс или элемент, но в данный момент это уже делает другой пользователь. |
424 | Failed Dependency / Невыполненная зависимость | Будет ли выполнен запрос, зависит от успешности совершения другой операции. Например, пользователь написал пост, нажал «Сохранить» и хочет добавить комментарий. Если из-за внутренней ошибки пост не сохранится, то оставить комментарий будет нельзя, и сервер вернет ответ с кодом 424. |
425 | Too Early / Слишком рано | Сервер не может выполнить запрос, потому что не закончил проверку выполнения предыдущего. Например, если пользователь оплатил заказ в онлайн-магазине и хочет отследить путь посылки, а сервер пока не обработал оплату, он пришлет ответ 425. |
426 | Upgrade Required / Требуется обновление | Клиенту необходимо обновить протокол — например, перейти на TLS. |
428 | Precondition Required / Требуется указать условия | Клиенту необходимо указать в заголовке условия, которые уточняют запрос. |
429 | Too Many Requests / Слишком много запросов | Сервер подозревает, что клиент хочет совершить DDoS-атаку и не пускает его на ресурс. В заголовке ответа может быть указано Retry-After («Попробуйте снова после…») и время, через которое можно снова попытаться отправить запрос. |
431 | Request Header Fields Too Large / Заголовок слишком большой | Допустимая длина заголовка превышена. После уменьшения поля заголовка запрос можно повторить. |
434 | Requested Host Unavailable / Запрашиваемый хост недоступен | Сервер не нашел данных об отправленном HTTP-коде. |
444 | No response / Нет ответа | Используется сервером Nginx, если сервер закрыл соединение без отправки данных — например, при возникновении внутренней ошибки. |
449 | Retry with / Повторить с | Данных в запросе недостаточно для получения ответа. Нужно дополнить запрос указанными сервером данными. Обычно используется в программах Microsoft. |
450 | Blocked by Windows Parental Controls / Заблокировано «Родительским контролем» | Ошибка появляется при попытке зайти на «взрослые» ресурсы с детского аккаунта. |
451 | Unavailable For Legal Reasons / Недоступно по юридическим причинам | Ресурс недоступен по юридическим причинам — например, если заблокирован на территории государства. Код ошибки — отсылка к роману Рэя Брэдбери «451 градус по Фаренгейту». |
456 | Unrecoverable Error / Ошибка без возможности восстановления | При запросе клиента возникают ошибки в таблицах баз данных — такое может происходить, если запрос составлен некорректно. |
499 | Client Closed Request / Клиент закрыл запрос | Используется сервером Nginx, если клиент закрыл соединение, пока сервер обрабатывал запрос. |
Коды 5xx (ошибки на стороне сервера)
Эти коды говорят о том, что сервер, который обрабатывает запрос, столкнулся с ошибкой и не может продолжить передачу данных. При этом в тело ответа сервер включает информацию о том, что произошло.
Код | Текстовое сообщение | Значение |
500 | Internal Server Error / Внутренняя ошибка сервера | Любая ошибка сервера, которая не поддается классификации с помощью других кодов. |
501 | Not Implemented / Не реализовано | Сервер не поддерживает метод запроса и не знает, как его обработать. В некоторых случаях он может отправить в теле ответа указание попробовать позднее. |
502 | Bad Gateway / Ошибочный шлюз | Вышестоящий сервер отправил недействительный ответ. Такое может произойти, например, из-за несогласованных протоколов. |
503 | Service Unavailable / Сервис недоступен | Сервер пока не может обрабатывать запросы — например, из-за технических работ. В некоторых случаях в теле ответа указано время, через которое можно повторить запрос. |
504 | Gateway Timeout / Шлюз не отвечает | Сервер не получил ответа от вышестоящего сервера — например, из-за проблем с соединением. |
505 | HTTP Version Not Supported / HTTP версия не поддерживается | Сервер не поддерживает версию HTTP — например, если она устарела. |
507 | Insufficient Storage / Переполнения хранилища | Места для обработки запроса не хватает. Возможно, через какое-то время владелец сервера решит проблему, и можно будет отправить запрос еще раз. |
508 | Loop Detected / Обнаружен цикл | Сервер отменил выполнение операции, так как при обработке запроса образуется бесконечный цикл. |
509 | Bandwidth Limit Exceeded / Исчерпана пропускная ширина канал | Используется, если у ресурса стоит ограничение на потребление трафика. |
510 | Not Extended / Расширение отсутствует | Клиент запрашивает расширение, которого нет у сервера. В ответе сервер указывает список доступных расширений. |
511 | Network Authentication Required / Требуется аутентификация в сети | Такой ответ отправляет сервер-посредник. Например, интернет-провайдер так сообщает клиенту, что нужно ввести пароль для доступа к сети. |
Как узнать код ответа сервера
Проверить код ответа сервера помогут:
- Опции браузера и специальные приложения. Так, в Google Chrome значение кода находится в столбце Status во вкладке Network. Для получения данных нужно открыть в браузере необходимую страницу сайта и нажать клавишу F12, чтобы тем самым активировать функциональную панель вебмастера или самостоятельно перейти в «Инструменты разработчика».
Также в данном браузере можно установить плагин Redirect Path.
- Бесплатные ресурсы для диагностики кодов ответа. Они помогут провести анализ одной страницы или одновременно просканировать сразу несколько страниц. К наиболее популярным сервисам относят:
- 2ip.ru;
- Bertal;
- Pr-Cy;
- Checkmy;
- Coolakov.ru — для массовой проверки.
Ряд ошибок вы можете решить самостоятельно или с помощью нашей техподдержки. Если же проблема требует серьезного вмешательства, то мы поможем устранить её в рамках пакета администрирования или разового обращения.
Выводы
Коды состояния HTTP делятся на 5 категорий, среди которых собственно ошибками являются две последние — с кодами 4хх и 5хх. Коды ошибок позволяют в лаконичной форме донести до клиента, что пошло не так. А прочитать код любой страницы проще всего через специальные онлайн-сервисы — это полезно разработчикам и обычным пользователям, чтобы понимать, почему не получается зайти на ресурс или выполнить определенное действие.