В этой статье — всё, что вам нужно знать про HTTP коды: что это такое и зачем они нужны, какие бывают и что означают, как влияют на работу сайта и как посмотреть HTTP коды на странице.

Что внутри

  1. Что такое коды состояния HTTP и зачем они нужны
  2. Как посмотреть HTTP коды на странице
  3. Какие бывают коды ответов HTTP
  4. Как разные HTTP коды влияют на SEO
  5. Список кодов состояния HTTP с описаниями
  6. Дополнительная информация

Что такое коды состояния HTTP и зачем они нужны

Код состояния HTTP (англ. HTTP status code) — это трёхзначное число, с которого начинается любой ответ сервера на запрос по протоколу HTTP. Код кратко сообщает суть ответа — был ли выполнен запрос или возникла ошибка.

В зависимости от кода ответа посетитель либо будет видеть содержимое страницы или результаты какого-то действия, либо не будет. Например код ответа 200 будет значить, что всё хорошо и сервер отправит контент, а код 403 будет значить, что доступ к контенту запрещён и сервер ничего не отправит.

Определённые коды могут указывать на проблемы в работе сервера и влиять на SEO-продвижение сайта.

Как посмотреть коды ответа сервера в браузере

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

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

Чтобы открыть инструменты в популярных браузерах, нажмите комбинацию клавиш:

  • Ctrl + Shift + I — на компьютере с Windows или Linux;
  • ⌘ + ⌥ + I — на компьютере с macOS.
HTTP status code 200 OK в инструментах разработчика

Какие бывают коды состояния HTTP

Коды ответов HTTP делятся на пять классов. В каждом из них объединены сообщения с похожими значениями. Вот краткие описания каждого из классов:

  • 1хх — информационные коды. Сообщают о прогрессе выполнения запроса. На практике практически не встречаются.
  • 2хх — коды успешно выполненных запросов. Сообщают о том, что всё в порядке и работает, как ожидалось.
  • 3хх — коды перенаправлений. Сообщают о том, что запрашиваемая страница переехала и нужно сделать ещё один запрос по новому URL.
  • 4хх — коды ошибок клиента. Сообщают об ошибке на стороне пользователя, который отправил запрос.
  • 5хх — коды ошибок сервера. Сообщают об ошибке на стороне сервера, который обрабатывал запрос.

В каждом классе есть разное количество HTTP кодов и все они предназначены для своей ситуации. Мы рассмотрим все официальные коды сервера и их значения в отдельном разделе чуть ниже.

Как разные HTTP коды влияют на SEO

Поисковые роботы тоже понимают коды состояния HTTP. Коды классов 1хх и 2хх никак не отразятся на позициях страницы в результатах поиска, а коды классов 3хх, 4хх и 5хх отразятся, но в зависимости от класса по-разному.

HTTP коды класса 3хх это коды перенаправлений с одной страницы на другую. Есть постоянные перенаправления (301 и 308), которые передают позиции старой страницы на новую. А есть временные (302, 303 и 307), которые не передают позиции. Но если временный редирект будет стоять слишком долго, Google подумает, что владелец сайта поставил его по ошибке, и начнёт воспринимать такой редирект как постоянный.

HTTP коды классов 4хх и 5хх это коды ошибок. Не все, но многие из них негативно влияют на позиции страницы в результатах поиска. Обычно, когда бот заходит на страницу и видит там коды ошибки HTTP в любом из этих классов, он пробует зайти на неё ещё раз в пределах суток, рассчитывая на то, что владелец сайта решит проблему. Если ошибка возникает и при повторном посещении, бот может исключить страницу из индекса. Мы даже сталкивались с ситуациями, когда страница выпадала из индекса с первого посещения.

Проверить, выпала ли страница из индекса, можно в Google Search Console. Для этого войдите в консоль, введите в строке поиска URL страницы и нажмите Enter. Сервис проверит страницу и покажет её статус. Если страницы уже нет в индексе, нажмите «Запросить индексирование», чтобы повторно её туда добавить.

Также Search Console поможет вам своевременно обнаруживать ошибки. Для этого просто периодически проверяйте раздел «Покрытие» на главной странице панели в меню слева. В него будут записываться все ошибки на сайте. Подробнее на эту тему:

Как добавить сайт в Google Search Console

Список кодов состояния HTTP с описаниями

Всего существует более 40 официальных кодов состояния HTTP. Есть ещё примерно столько же неофициальных, но в этой статье мы их рассматривать не будем. Даже многие из официальных возникают крайне редко.

1хх Informational — информационные коды

  • HTTP 100 Continue — «Продолжить». Означает, что сервер получил начальную часть запроса и готов принять остальную его часть. Отправляется при наличии в запросе заголовка Expect.
  • HTTP 101 Switching Protocols — «Переключить протокол». Означает, что сервер меняет протокол. Отправляется при наличии в запросе заголовка Upgrade.
  • HTTP 103 Early Hints — «Предварительные данные». Предварительный ответ с частью заголовков. Используется, когда сервер не может быстро сформировать все заголовки. Их полный список будет присутствовать в окончательном ответе.

2xx Success — коды успешно выполненных запросов

  • HTTP 200 OK — «Успешно». Сервер успешно обработал запрос.
  • HTTP 201 Created — «Создано». Сервер успешно обработал запрос и создал новый ресурс. 
  • HTTP 202 Accepted — «Принято». Сервер начал обрабатывать запрос, но пока ещё не закончил процесс. В конечном итоге обработка запроса может как завершиться, так и не завершиться.
  • HTTP 203 Non-Authoritative Information — «Неофициальная информация». Сервер успешно обработал запрос, но прокси, через который проходил ответ на запрос, изменил этот ответ.
  • HTTP 204 No Content — «Нет содержимого». Сервер успешно обработал запрос, но кроме заголовков ответа нет содержимого, которое можно было бы отправить в ответ.
  • HTTP 205 Reset Content — «Сбросить содержимое». Сервер успешно обработал запрос и отправил в ответ команду сбросить данные, которые пользователь ввёл, перед тем как отправить запрос.
  • HTTP 206 Partial Content — «Частичное содержимое». Сервер успешно обработал частичный запрос и отправил содержимое, указанное в заголовке Content-Range. Используется, например, для возобновления поставленной на паузу загрузки.
  • HTTP 207 Multi-Status — «Мульти-статус». В результатах запроса есть информация о нескольких независимых друг от друга операциях.

3xx Redirection — коды перенаправлений

  • HTTP 300 Multiple Choices — «Множественный выбор». Сервер присылает такой код, когда есть несколько возможных ответов на запрос. Например, на сервере есть несколько типов файлов, которые отвечают условиям запроса. Пользователь или user-agent должен выбрать один из вариантов. 
  • HTTP 301 Moved Permanently — «Перемещено навсегда». Запрашиваемый ресурс теперь доступен по новому URI и при последующих запросах стоит использовать именно его.
  • HTTP 302 Found — «Найдено». Раньше этот код назывался 302 Moved Temporarily — «Перещено временно». Запрашиваемый ресурс временно доступен по другому URI и при последующих запросах стоит использовать старый URI.
  • HTTP 303 See Other — «Смотри в другом месте». Запрашиваемый ресурс нужно искать по другому URI с методом запроса GET, несмотря на то, что в изначальном запросе мог быть другой метод.
  • HTTP 304 Not Modified — «Не изменено». Запрашиваемый ресурс не был изменён, поэтому стоит использовать его кэшированную версию.
  • HTTP 305 Use Proxy — «Используй прокси». Запрос к ресурсу должен осуществляться через прокси. Этот код больше не используется.
  • HTTP 306 Switch Proxy — «Зарезервировано». Запрос к ресурсу должен осуществляться через прокси, который сервер указал в заголовках ответа. Этот код больше не используется.
  • HTTP 307 Temporary Redirect — «Временное перенаправление». Запрашиваемый ресурс временно доступен по другому URI. При запросе к новому URI клиент ОБЯЗАН использовать тот же метод, что и при изначальном запросе. Этот код имеет такую же логику, что и 302 Found. Его ввели, потому что при 302 HTTP коде некоторые клиенты меняли тип запроса.
  • HTTP 308 Permanent Redirect  — «Постоянный редирект». У запрашиваемого ресурса навсегда изменился URI и во всех следующих запросах стоит обращаться к нему. Этот код похож на 301 Moved Permanently, но в случае с кодом 308 нельзя менять тип запроса с POST на GET.

4xx Client Error — коды ошибок клиента

  • HTTP 400 Bad Request — «Неверный запрос». Сервер не может обработать запрос, потому что не понимает его. Например, из-за синтаксической ошибки.
  • HTTP 401 Unauthorized — «Неавторизованно». Сервер не может обработать запрос без аутентификации. Нужно добавить в заголовок запроса поле Authorization или проверить правильность данных в этом поле, если оно уже присутствует.
  • HTTP 402 Payment Required — «Необходима оплата». Изначально этот код должен был использоваться в платёжных системах. Сейчас он не используется.
  • HTTP 403 Forbidden — «Запрещено». Сервер отказывается обработать запрос, потому что у пользователя нет прав на просмотр содержимого.
  • HTTP 404 Not Found — «Не найдено». Сервер не может найти запрашиваемый ресурс. 
  • HTTP 405 Method Not Allowed — «Метод запрещён». Указанный в запросе метод нельзя использовать. Сервер ОБЯЗАН указать доступные методы в заголовке Allow.
  • HTTP 406 Not Acceptable — «Неприемлемо». На сервере нет контента, который отвечает указанным в заголовках запроса характеристикам.
  • HTTP 407 Proxy Authentication Required — «Необходима аутентификация для прокси». У этого кода такая же логика, что и у 401 Unauthorized, но в этом случае клиент должен авторизоваться для использования прокси.
  • HTTP 408 Request Timeout — «Истекло время ожидания ответа на запрос». Сервер не получил запрос полностью в течение максимально допустимого для этого времени. Такой код может возникнуть при передаче данных большого объёма методом PUT или POST.
  • HTTP 409 Conflict — «Конфликт». Сервер не смог обработать запрос из-за того что содержимое этого запроса вступило в конфликт с параметрами сервера. Такое может случиться, если два клиента одновременно пытаются изменить ресурс при помощи метода PUT.
  • HTTP 410 Gone — «Удалено». Запрос не может быть обработан, потому что ресурс был удалён. Новое расположение ресурса при этом неизвестно.
  • HTTP 411 Length Required — «Требуется значение заголовка Content-Length». Сервер отказывается обрабатывать запрос, пока в его заголовках не будет указано значение в поле Content-Length.
  • HTTP 412 Precondition Failed — «Невыполнимые условия запроса». Сервер не может обработать запрос, потому что в его заголовках указано условие, которое не может быть выполнено.
  • HTTP 413 Payload Too Large — «Слишком большое тело запроса». Тело запроса превышает максимально допустимый размер, который сервер может принять.
  • HTTP 414 URI Too Long — «Слишком длинный URI». URI превышает максимально допустимую длину. Такое может случиться, если выбран неправильный метод (GET вместо POST).
  • HTTP 415 Unsupported Media Type — «Неподдерживаемый медиа формат данных». Сервер отказывается обработать запрос, потому что его содержимое содержит данные в недопустимом для такого метода формате.
  • HTTP 416 Range Not Satisfiable — «Диапазон не может быть выполнен». В поле Range указан недопустимый для ресурса диапазон.
  • HTTP 417 Expectation Failed — «Недопустимое значение поля Expect». Сервер не может выполнить условие в поле Expect в заголовках запроса.
  • HTTP 418 I’m a teapot — «Я чайник». Сообщение, которое должен отправлять чайник для заварки чая, если на нём пытаются заварить кофе. Этот код ошибки был введён в качестве первоапрельской шутки в 1998 году.
  • HTTP 422 Unprocessable Entity — «Необрабатываемый запрос». Синтаксис запроса правильный, но из-за логической ошибки сервер не может его выполнить. Такой код ошибки может возникнуть, если запрос содержит XML-документ с логической ошибкой.
  • HTTP 423 Locked — «Заблокировано». Запрашиваемый ресурс заблокирован для запросов с таким методом.
  • HTTP 424 Failed Dependency — «Невыполненная зависимость». Сервер не смог выполнить запрос, потому что запрашиваемое в нём действие зависело от другого действия, и оно не сработало.
  • HTTP 426 Upgrade Required — «Необходимо обновить протокол». Сервер отказывается обрабатывать запрос, используя текущий протокол, но может сделать это после перехода на его другую версию. Сервер ОБЯЗАН указать в заголовках ответа требуемую версию протокола в поле Upgrade.
  • HTTP 499 Client Closed Request — «Клиент отозвал запрос». Нестандартный код для Nginx, чтобы обозначить ситуацию, в которой клиент закрыл соединение, пока Nginx обрабатывал запрос.

5xx Server Error — коды ошибок сервера

  • HTTP 500 Internal Server Error — «Внутренняя ошибка сервера». Сервер столкнулся с непредвиденной ошибкой во время обработки запроса.
  • HTTP 501 Not Implemented — «Не реализовано». Сервер не поддерживает функционал, который необходим для обработки запроса.
  • HTTP 502 Bad Gateway — «Неверный шлюз». Сервер получил некорректный ответ от вышестоящего сервера.
  • HTTP 503 Service Unavailable — «Сервис недоступен». Сервер недоступен, потому что перегружен или на нём проводятся технические работы.
  • HTTP 504 Gateway Timeout — «Шлюз не отвечает». Сервер не получил своевременного ответа от вышестоящего сервера и закрыл соединение.
  • HTTP 505 HTTP Version Not Supported — «Версия HTTP не поддерживается». Сервер не поддерживает версию HTTP, которая указана в заголовках запроса.
  • HTTP 507 Insufficient Storage — «Недостаточно места». Сервер не может выполнить запрос, потому что на нём недостаточно свободного места, чтобы сохранить необходимые для выполнения запроса данные.
  • HTTP 508 Loop Detected — «Обнаружено бесконечное перенаправление». Сервер отменил выполнение операции, поскольку обнаружил бесконечный редирект при обработке запроса с параметром Depth: infinity.
  • HTTP 509 Bandwidth Limit Exceeded — «Исчерпана пропускная способность канала». Сайт исчерпал лимит по использованию трафика на хостинге. Этот код ошибки HTTP не описан в RFC и единственное ПО, которое его использует, это модуль bw/limited, который входит в панель управления хостингом cPanel.

Дополнительная информация

Описания основных кодов состояния HTTP можно посмотреть в официальных документах RFC.

Некоторые HTTP коды описаны в других собственных версиях RFC: код 103, коды 207, 304, 412, 422 – 424, 507, код 308, коды 401 и 407, коды 406 и 418, код 416, код 508.

Стабильный хостинг с поддержкой 24/7

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

Мы можем помочь перенести сайт к нам, если вы хотите сменить провайдера. Cотрудники нашей техподдержки проанализируют сайт у текущего провайдера, подберут подходящий тариф и обсудят с вами условия переноса. А когда договоритесь о деталях, бесплатно перенесут ваш сайт на HOSTiQ и проверят, чтобы он исправно работал.

Была ли статья полезной?

Спасибо за отзыв!