Полное руководство по кодам статуса HTTP

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

Такие сообщения возвращаются каждый раз, когда браузер взаимодействует с сервером, даже если вы не видите их. Коды статуса HTTP являются бесценным инструментом для диагностики и исправления ошибок, возникших в конфигурации сайта.

В этой статье представлены наиболее распространенные коды статуса и коды ошибок.

Откуда они берутся?

Каждый раз, когда вы кликаете по ссылке или вводите URL-адрес и нажимаете «Enter», браузер отправляет запрос на сервер. Он  получает и обрабатывает запрос, а затем отправляет обратно запрашиваемые ресурсы вместе с HTTP-заголовком.

Коды статуса доставляются в браузер в HTTP-заголовке. Хотя вы их не видите. Но когда что-то пошло не так, пользователю отображается код статуса в браузере. Это способ сервера сказать: «Что-то не так. Вот код, который объясняет, что именно».

Код статуса HTTP Google 404

Чтобы увидеть коды статуса, которые браузер обычно не отображает, потребуются специальные инструменты. Для популярных браузеров, таких как Chrome и Firefox, доступны соответствующие расширения. Также существует много сервисов для отображения заголовков, например Web Sniffer.

Чтобы увидеть код статуса HTTP с помощью одного из этих инструментов, найдите строку, расположенную в верхней части отчета, в которой указано: “Status: HTTP/1.1”. После нее указан код статуса, возвращаемый сервером.

Классы кодов статуса HTTP

Коды статуса HTTP разделены на 5 классов:

  • 100: информационные коды, указывающие, что запрос, инициированный браузером, продолжается.
  • 200: коды успешного запроса. Возвращаются, когда запрос браузера был успешно получен, распознан и обработан сервером.
  • 300: коды перенаправления возвращаются, когда запрошенный ресурс заменен новым.
  • 400:  http-ошибки, возникающие на стороне клиента и указывающие на наличие проблемы с запросом.
  • 500: коды ошибок сервера, указывающие, что запрос был принят, но ошибка на сервере не позволила выполнить его.

Список кодов статуса HTTP

Существует более 40 различных кодов статуса сервера. Но тех, с которыми вы будете сталкиваться регулярно меньше дюжины. Ниже приводится список кодов статуса HTTP:

Код статуса 200

200: «Все в порядке». Это код, который возвращается, когда веб-страница или ресурс действуют точно так, как ожидается.

Коды статуса 300

301: «Запрошенный ресурс был перемещен навсегда». Этот код возвращается, когда веб-страница или ресурс заменяется другим ресурсом. Он используется для постоянного редиректа URL-адресов.

302: это http-ошибка «Запрошенный ресурс перемещен, но был найден». Этот код используется для указания того, что запрошенный ресурс был найден, но не в том месте, где это ожидалось. Он используется для временного редиректа URL-адресов.

304: «Запрошенный ресурс не был изменен с момента последнего обращения к нему». Сообщает, что ресурсы, хранящиеся в кэше браузера, не изменились. Он используется для ускорения доставки веб-страниц за счет повторного использования ранее загруженных ресурсов.

Коды статуса 400

401: «Не авторизован». Возвращается сервером, когда для доступа к целевому ресурсу отсутствуют валидные учетные данные.

http-ошибка 403: «Доступ к этому ресурсу запрещен». Возвращается, когда пользователь пытается открыть ресурс, для которого у него нет прав доступа. Например, попытка просмотра неавторизованным пользователем контента, защищенного паролем, может привести к ошибке 403.

404: «Запрошенный ресурс не найден». Наиболее распространенное сообщение об ошибке. Означает, что запрошенный ресурс не существует и сервер не знает, существовал ли он когда-либо.

405: «Метод не разрешен». Генерируется, когда хостинг-сервер (исходный сервер) поддерживает полученный метод, но целевой ресурс отсутствует.

406: «Неприемлемый ответ». Запрошенный ресурс способен генерировать только контент, неприемлемый в соответствии с заголовками Accept, отправленными в запросе.

408: «Время ожидания сервером поступления остальной части запроса из браузера истекло». Генерируется, когда сервер прерывает обработку после истечения времени ожидания полного запроса от браузера. Другими словами, сервер не получил полный запрос, отправленный браузером. Одной из возможных причин может быть перегрузка сети, приводящая к потере пакетов между браузером и сервером.

410: «Запрошенный ресурс отсутствует и не будет возвращен». Подобен коду 404 «Не найден», за исключением того, что код статуса 410, указывает, что данный статус ожидается на постоянной основе.

429: это http-ошибка «Слишком много запросов». Генерируется сервером, когда пользователь отправил слишком много запросов в заданный промежуток времени (ограничение по скорости). Иногда причиной ошибки могут быть боты, пытающиеся получить доступ к сайту. В этом случае может потребоваться изменение URL-адреса входа в панель администрирования WordPress.

429 слишком много запросов

499: «Клиент закрыл запрос». Возвращается NGINX, когда клиент закрывает запрос, пока NGINX все еще обрабатывает его.

Коды статуса500

500: «На сервере возникла ошибка, и запрос не мог быть завершен». Общий http-код, который также называют «внутренняя ошибка сервера». На сервере что-то пошло не так и запрошенный ресурс не был доставлен. Этот код генерируется сторонними плагинами, при сбоях PHP-кода или подключения к базе данных.

Ошибка при установлении соединения с базой данных

501: «Не реализовано». Эта ошибка указывает на то, что сервер не поддерживает функции, необходимые для выполнения запроса. Ошибка почти всегда связана с самим сервером, и для ее решения нужно обратиться в службу поддержки хостинг-провайдера.

502:  это http-ошибка «Некорректный шлюз». Означает, что один сервер получил неверный ответ от другого. Иногда запрос занимает слишком много времени, и поэтому отменяется или удаляется сервером, а соединение с базой данных прерывается.

503: это http-ошибка «В данный момент сервер не может обработать запрос». Запрос не может быть обработан прямо сейчас. Этот код возвращается перегруженным сервером, который не может обрабатывать новые запросы.

504: «Сервер, действующий как шлюз, не смог дождаться ответа от другого сервера». Возвращается, когда в обработке запроса было задействовано два сервера, и на первом сервере истекло время ожидания ответа от второго.

Более подробная информация о кодах статуса HTTP

В приведенном выше списке поясняется большинство кодов статуса HTTP, с которыми вы можете столкнуться. Вот ресурсы, на которых можно более подробно узнать о редких кодах статуса HTTP, не рассмотренных в нашей статье:

  • Полный список кодов статуса HTTP — Википедия;
  • Определения кодов статусаInternet Engineering Task Force (IETF);
  • RFC 7231.

 

Перевод статьи «A Complete Guide and List of HTTP Status Codes» был подготовлен дружной командой проекта Сайтостроение от А до Я.