Каждый раз, когда браузер открывает страницу, он обращается к серверу, а тот отвечает не только содержимым, но и коротким трёхзначным числом. Это код ответа сервера, из которого видно, получилось ли выполнить запрос и если нет, то по чьей вине. Часть кодов мы видим в виде страниц с ошибкой, а большинство остаётся незаметным. Разберёмся, как устроены коды состояния HTTP, что они означают и как их проверить.
Что такое код ответа
Код ответа, или статус, — это число в первой строке ответа сервера. Рядом с ним стоит короткое пояснение вроде «OK» или «Not Found». Коды определены в стандарте HTTP и ведутся в реестре IANA. Благодаря им браузер, поисковый робот или приложение понимают результат без чтения самого содержимого страницы: нужно показать контент, перейти по другому адресу или сообщить об ошибке.
Классы кодов ответа сервера
Первая цифра определяет класс, и этого часто достаточно, чтобы понять суть:
- 1xx — информационные: сервер получил запрос и продолжает работу.
- 2xx — успешные: запрос выполнен.
- 3xx — перенаправления: нужно обратиться по другому адресу.
- 4xx — ошибки клиента: проблема в самом запросе.
- 5xx — ошибки сервера: запрос корректен, но сервер не смог его обработать.
Именно поэтому в запросах про «ошибки 100 200 300 400 500» речь идёт о классах. Строго говоря, ошибками считаются только 4xx и 5xx, а остальные группы — нормальная часть работы протокола. Других классов в стандарте нет: значения вроде 007 или 600 официальными кодами не являются.
Коды 1xx: информационные
Встречаются редко и в основном остаются между браузером и сервером. Код 100 Continue сообщает, что заголовки приняты и можно отправлять тело запроса. Код 101 Switching Protocols означает переход на другой протокол, например, на WebSocket. Код 103 Early Hints позволяет заранее подсказать браузеру, какие ресурсы стоит начать загружать.
Коды 2xx: успех
- 200 OK. Запрос выполнен, ответ содержит данные. Это самый частый код ответа.
- 201 Created. Ресурс создан. Такой ответ ждут от API после добавления записи.
- 202 Accepted. Запрос принят, но обработка ещё не завершена.
- 204 No Content. Запрос выполнен, но возвращать нечего. Многих интересует, что значит ошибка 204, но на деле это не ошибка: так отвечают, например, на удаление или сохранение настроек, когда содержимое не требуется.
- 206 Partial Content. Отдана часть файла. Благодаря этому работает докачка и перемотка видео.
Коды 3xx: перенаправления
Код ответа 300 (Multiple Choices) означает, что у ресурса несколько вариантов, и клиенту предлагается выбрать. На практике он встречается нечасто. Гораздо чаще используют другие:
- 301 Moved Permanently. Страница навсегда переехала. Поисковики переносят вес на новый адрес.
- 302 Found. Временное перенаправление.
- 304 Not Modified. Содержимое не менялось, браузер может использовать сохранённую копию. Благодаря этому коду сайты открываются быстрее.
- 307 и 308. Временное и постоянное перенаправления, сохраняющие метод запроса.
Лишние или зацикленные редиректы замедляют сайт и могут привести к ошибке «слишком много перенаправлений».
Коды 4xx: ошибки клиента
- 400 Bad Request. Запрос составлен неверно.
- 401 Unauthorized. Нужна авторизация, либо данные для входа неверны.
- 403 Forbidden. Доступ запрещён, даже если вы вошли.
- 404 Not Found. Запрошенный ресурс не найден: страницы нет по этому адресу. Самая известная ошибка в сети.
- 405 Method Not Allowed. Метод запроса не поддерживается для этого адреса.
- 408 Request Timeout. Сервер не дождался запроса от клиента.
- 410 Gone. Страница удалена навсегда, и возвращать её не планируется.
- 413 Payload Too Large. Размер отправленных данных превышает допустимый.
- 429 Too Many Requests. Слишком много обращений за короткое время.
- 499. В стандарте HTTP такого кода нет. Его использует веб-сервер Nginx: клиент закрыл соединение, не дождавшись ответа. Если в логах много таких записей, сайт, вероятно, отвечает слишком медленно.
Коды 5xx: ошибки сервера
- 500 Internal Server Error. Внутренняя ошибка: чаще всего сбой в коде или конфигурации.
- 501 Not Implemented. Сервер не умеет выполнять запрошенное действие.
- 502 Bad Gateway. Промежуточный сервер получил некорректный ответ от вышестоящего, например, Nginx не смог связаться с приложением.
- 503 Service Unavailable. Сервис временно недоступен: перегрузка или технические работы.
- 504 Gateway Timeout. Шлюз не дождался ответа от другого сервера.
- 599. Тоже не входит в стандарт. Некоторые библиотеки и прокси используют его для сетевых ошибок и тайм-аутов подключения, поэтому смысл зависит от конкретной программы.
Как посмотреть код ответа
Есть несколько способов:
- Инструменты разработчика в браузере. Откройте их клавишей F12, перейдите на вкладку Network и обновите страницу. Для каждого запроса отображается статус.
- Командная строка. Утилита curl с ключом -I показывает заголовки и код ответа.
- Онлайн-сервисы проверки. Вводите адрес и получаете статус, а часто и цепочку редиректов.
- Журналы сервера. В логах доступа каждая строка содержит код ответа. Это основной способ искать проблемы на стороне сервера.
- Панели вебмастеров. Поисковые системы показывают, какие коды получал их робот при обходе сайта.
Что делать при ошибке
При ошибках 4xx проверьте адрес, права доступа, правильность запроса и настройки перенаправлений. Если 404 на существующей странице, смотрите настройки адресов и правила в конфигурации сервера. Для удалённых страниц настройте 301 на похожий раздел либо отдавайте 410.
Ошибки 5xx требуют работы на стороне сервера: просмотрите журнал ошибок, проверьте нагрузку на процессор и память, работу базы данных и приложения, наличие места на диске. Частые 502 и 504 нередко связаны с нехваткой ресурсов или тяжёлыми запросами. Сообщения «ошибка при получении ответа сервера» без кода обычно означают проблему сети, DNS или сертификата, поэтому начните с проверки связи.
Итог
Код ответа — это коротко записанный результат запроса. Первая цифра задаёт класс, а остальное уточняет причину. Зная основные коды, можно быстро понять, где искать проблему: в адресе и запросе или на самом сервере. Для сайта важно следить за ошибками в логах и не допускать массовых 404 и 5xx.
Многие проблемы с ответами сервера связаны с нехваткой ресурсов или нестабильной площадкой. Разместить проект можно на VPS/VDS CloudX: гарантированные выделенные мощности, быстрые SSD, безлимитный трафик и фиксированные цены в рублях. Для настройки веб-сервера и просмотра логов подойдут Linux VDS, а если вы не хотите заниматься администрированием, посмотрите управляемые VPS/VDS. Для защищённого соединения закажите SSL-сертификат. Техническая поддержка работает круглосуточно.
