Перфоманс Лаб

функциональное тестирование
16 октября, 2018

Коды состояния — руководство

Время чтения: 7 мин.
16 октября, 2018
Автор:
Руслан Никитин

Коды состояния HTTP и как их интерпретировать

Во время просмотра сайтов в сети Интернет и работы с веб-приложениями в браузере могут появляться различные ошибки. Если вы являетесь владельцем сайта или разработчиком, понимание причины возникновения данных ошибок крайне необходимо. Давайте попробуем разобраться, откуда же они берутся?

Каждый раз, когда пользователь нажимает на ссылку или переходит на URL сайта, браузер посылает запрос к веб-серверу. Сервер, в свою очередь, обрабатывает запрос и возвращает ответ, содержащий информацию о том, успешно ли был обработан запрос. Результат обработки запроса передается в первой строке ответа и называется кодом состояния.

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

Именно поэтому коды состояния HTTP являются бесценным инструментом для диагностики и исправления ошибок конфигурации веб-сайта.

Код состояния HTTP (англ. HTTP status code) — это целое трехзначное число в первой части ответа сервера при запросах по протоколу HTTP.

Классы кодов состояния

Все коды состояния разделяются на классы. Класс состояния указывается в первой цифре, две следующие – уточняющие.

  • 1xx: Информационные коды состояния, отражающие процесс передачи запроса.
  • 2xx: Коды успеха, означающие, что сервер успешно получил и обработал запрос.
  • 3xx: Перенаправляющие коды возвращаются, когда изменилось расположение запрашиваемого ресурса и нужно сделать еще один запрос по новому URI.
  • 4xx: Коды ошибки на стороне клиента означают, что обнаружена проблема в запросе.
  • 5xx: Коды ошибки на стороне сервера сообщают, что запрос был получен сервером, но во время его обработки возникла ошибка.

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

200 Код состояния

  • 200: «ОК». Этот код возвращается, когда веб-страница или ресурс действует именно так, как требуется.

300 Коды состояния

  • 301: «Запрашиваемый ресурс был навсегда перемещен». Этот код возвращается, если запрашиваемому ресурсу был установлен новый URI и будущие обращения к этому ресурсу должны осуществляться по возвращенному URI.
  • 302: «Запрашиваемый ресурс временно находится по другому URI». Так как переадресация может быть изменена в любой момент, клиенту следует продолжать использовать тот же самый URI для будущих запросов.
  • 304: «Запрашиваемый ресурс не изменился с момента последнего запроса». Этот код ответа значит, что запрошенный ресурс не был изменен и клиент может продолжать использовать кэшированную версию ответа. Используется для увеличения скорости загрузки веб-страницы с помощью переиспользования ранее загруженных ресурсов.

400 Коды состояния

  • 400: «Ошибка в запросе». Запрос не удалось обработать из-за синтаксической ошибки. Клиенту не следует повторять такой запрос без изменений.
  • 401: «Не авторизовано». Для получения запрашиваемого ответа требуется аутентификация.
  • 403: «Доступ запрещен». У клиента отсутствуют права доступа к ресурсу, поэтому сервер отказывается дать надлежащий ответ. Авторизация не поможет и этот запрос не следует повторять.
  • 404: «Не найдено». Самая распространённая ошибка, возникающая из-за того, сервер не может найти запрашиваемый ресурс по указанному URI. Это чаще всего вызвано ошибкой в написании URI страницы, но код состояния 404 может использоваться в ответе и вместо других кодов, если сервер не хочет раскрывать истинную причину того, почему он не обработал запрос.
  • 405: «Метод не разрешен». Выполнение метода, определенного в запросе, не разрешено для запрашиваемого ресурса. Ответ должен содержать заголовок Allow, содержащий список разрешенных методов для запрашиваемого ресурса.
  • 408: «Таймаут запроса». Клиент не предоставил запрос за то время, пока сервер был готов его ждать. Ответ с данным кодом может отправляться сервером во время простоя соединения, даже если клиент не отправлял запрос, и означает, что сервер хочет разорвать текущее соединение. Имейте в виду, что некоторые сервера могут разрывать соединение даже без отправки этого сообщения.
  • 410: «Ресурс пропал». Требуемый ресурс больше не доступен на сервере и адрес его расположения не известен.
  • 415: «Формат не поддерживается». Сервер отказывается обработать запрос, потому что тело запроса имеет неподдерживаемый запрошенным ресурсом формат.
  • 429: «Слишком много запросов». Данный код означает, что клиент отправил слишком большое количество запросов в заданный промежуток времени.

500 Коды состояния

  • 500: «Внутренняя ошибка сервера». Сервер столкнулся с неожиданными условиями, которые не позволили ему обработать запрос. Универсальное сообщение о внутренней ошибке сервера, когда никакое более определенное сообщение не подходит.
  • 502: «Неверный шлюз». Сервер, выступая в роли шлюза или прокси-сервера, получил некорректный ответ от вышестоящего сервера, к которому он обратился для выполнения запроса.
  • 503: «Сервис недоступен». Сервер не может обработать запрос, так как временно перегружен или недоступен из-за технических работ. Это временное состояние, из которого сервер выйдет через какое-то время.
  • 504 «Таймаут шлюза». Сервер, выступая в роли шлюза или прокси-сервера, не дождался ответа от вышестоящего сервера в рамках установленного таймаута текущего запроса.

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

В случае, если обнаруженный код отсутствует в списке, вы можете воспользоваться следующими ресурсами:

Исчерпывающий список кодов состояния в Википедии

Список кодов состояния и их совместимости с браузерами на сайте Mozilla

Используйте этот материал как ваш путеводитель по кодам состояния HTTP. Их понимание действительно важно для развития вашего сайта и может спасти вас от многих неприятностей — помните их и применяйте информацию в будущем!

Чтобы узнать подробнее о наших услугах