В этой статье — всё, что вам нужно знать про HTTP коды: что это такое и зачем они нужны, какие бывают и что означают, как влияют на работу сайта и как посмотреть HTTP коды на странице.
Что внутри
- Что такое коды состояния HTTP и зачем они нужны
- Как посмотреть HTTP коды на странице
- Какие бывают коды ответов HTTP
- Как разные HTTP коды влияют на SEO
- Список кодов состояния HTTP с описаниями
- Дополнительная информация
Что такое коды состояния HTTP и зачем они нужны
Код состояния HTTP (англ. HTTP status code) — это трёхзначное число, с которого начинается любой ответ сервера на запрос по протоколу HTTP. Код кратко сообщает суть ответа — был ли выполнен запрос или возникла ошибка.
В зависимости от кода ответа посетитель либо будет видеть содержимое страницы или результаты какого-то действия, либо не будет. Например код ответа 200 будет значить, что всё хорошо и сервер отправит контент, а код 403 будет значить, что доступ к контенту запрещён и сервер ничего не отправит.
Определённые коды могут указывать на проблемы в работе сервера и влиять на SEO-продвижение сайта.
Как посмотреть коды ответа сервера в браузере
Это может понадобиться, если нужно убедиться в правильности настроек редиректа или диагностировать ошибки при загрузке отдельных элементов на странице, когда основной контент загружается, но какой-то функционал недоступен.
Для этого нужно открыть в браузере инструменты разработчика на странице, где возникает ошибка, перейти на вкладку «Сеть» и обновить страницу. После этого вы увидите все HTTP запросы и коды ответа сервера.
Чтобы открыть инструменты в популярных браузерах, нажмите комбинацию клавиш:
- Ctrl + Shift + I — на компьютере с Windows или Linux;
- ⌘ + ⌥ + I — на компьютере с macOS.
Какие бывают коды состояния 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 и проверят, чтобы он исправно работал.