Служба поддержки работает онлайн круглосуточно

8(800) 505-93-34

Бесплатный звонок ( с 7:00 до 15:00 пн. – пт.)

Какие коды ошибок есть в HTTP

Каждый раз, когда вы заходите на сайт, ваш браузер и сервер обмениваются невидимыми сигналами — кодами состояния HTTP. Эти трёхзначные целые числа, от 100 до 599, рассказывают о результате вашего запроса: успех, перенаправление или ошибка. Скорее всего, вы уже видели сообщения вроде «404 Not Found» или «500 Internal Server Error». Рассказываем, что скрывается за этими цифрами и как их понимание упростит вашу работу в интернете.

Что такое код состояния HTTP

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

Коды состояния — неотъемлемая часть протокола HTTP (HyperText Transfer Protocol). Они стандартизированы и разделены на классы в зависимости от первой цифры в трёхзначном числе:

  • 1xx — информационные (сервер получил запрос и продолжает работу);
  • 2xx — успешные (запрос выполнен);
  • 3xx — перенаправления (требуется перейти по другому адресу);
  • 4xx — ошибки на стороне клиента (например, неверный URL);
  • 5xx — ошибки на стороне сервера (проблемы в его работе).

По коду разработчики, администраторы и даже пользователи могут понять, что произошло с запросом. Например, если вы видите код 404, это значит, что страница не найдена, а 500 сигнализирует о внутренней ошибке сервера.

Код состоит из трех десятичных цифр. Первая определяет класс ответа (1–5). Именно она задаёт общий тип ситуации. Вторая и третья цифры уточняют конкретный сценарий. Например, в классе 4xx:

  • 400 — некорректный запрос;
  • 403 — доступ запрещён;
  • 404 — ресурс отсутствует.

Эти коды универсальны — они одинаково работают для любых сайтов и приложений, использующих HTTP.

Для браузеров и серверов коды (codes) — язык их «общения». Если сервер возвратил 200 OK, браузер понимает, что можно отображать контент. Если пришёл 301 Moved Permanently, браузер автоматически перейдёт на новый адрес.

Разработчикам коды помогают быстро диагностировать проблемы. Например, частые ошибки (errors) 502 Bad Gateway указывают на сбои в связях между серверами.

Большинство кодов скрыто от глаз пользователей, однако некоторые (вроде 404) отображаются в виде понятных им сообщений типа: «Страница не найдена».

Примеры из реальной жизни:

  1. Вы заполняете форму регистрации, но забываете ввести email. Сервер может вернуть 400 Bad Request — это ошибка, вызванная некорректными данными в запросе.
  2. Попытка перейти на закрытый раздел сайта без авторизации часто приводит к коду 403 Forbidden.
  3. Если сайт переехал на новый домен, код 301 Moved Permanently перенаправит вас автоматически, сохраняя SEO-рейтинг.

Все коды ошибок HTTP сервера задокументированы в спецификациях протокола (RFC 7231, RFC 9110). Например, код 418 I’m a teapot (англ. «Я — чайник») — шуточный ответ, добавленный как пасхальное яйцо, но даже у него есть формальное описание.

Понимание кодов ошибок состояния HTTP упрощает:

  • настройку веб-серверов (например, корректную обработку ошибок);
  • разработку API (правильные ответы на запросы);
  • оптимизацию пользовательского опыта (например, кастомизация страниц в ответ на ошибку 404).

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

Теперь рассмотрим описание кодов ошибок HTTP и их значения.

Что такое код состояния HTTP
Image by jcomp on Freepik.

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

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

  • 100 — сервер готов принять оставшуюся часть запроса;
  • 102 — идёт обработка, результат пока недоступен.

Коды этого типа редко видны пользователям — они применяются для технической коммуникации между системами.

2xx — успешное выполнение

Подтверждают, что запрос выполнен корректно. Самый известный пример — 200 OK, он означает, что страница загружена без проблем. Другие типы:

  • 201 — новый ресурс успешно создан;
  • 204 — сервер выполнил запрос, но не возвращает данных.

Такие коды — показатель штатной работы протокола.

3xx — перенаправления

Сообщают о необходимости перенаправить запрос на другой URL. Например:

  • 301 — ресурс перемещён навсегда;
  • 302 — временное перенаправление.

Этот класс используется при обновлении структуры сайта или смене домена.

4xx — ошибки, вызванные действиями клиента

Например, если пользователь ввёл неверный URL, сервер вернёт 404 Not Found. Другие примеры:

  • 400 — в запросе есть синтаксическая ошибка;
  • 403 — доступ к ресурсу запрещён.

Ошибки этого типа часто возникают из-за опечаток или отсутствия необходимых разрешений.

5xx — ошибки, происходящие на стороне сервера

Указывают на внутренние неполадки. Классический пример — 500 Internal Server Error, он означает, что сервер не смог обработать запрос из-за непредвиденной ошибки. Также встречаются:

  • 502 — проблемы с соединением между серверами;
  • 503 — сервер временно недоступен.

Обычно такие ошибки требуют вмешательства администратора.

Частые коды ошибок HTTP и способы их исправления

Коды ошибок состояния HTTP — это сигналы, по которым можно быстро представить себе, что не так с сайтом или API. Рассмотрим часто встречающиеся типы, их причины и способы реагирования.

На стороне клиента

Возникают из-за некорректных действий пользователя или сбоя в настройках клиентского приложения.

400. Описание: сервер не распознал запрос из-за неправильного синтаксиса (например, недопустимые символы в URL).

Что делать:

  • проверьте корректность введённых данных (особенно в формах);
  • убедитесь, что заголовки запроса (Content-Type, Accept) соответствуют требованиям API;
  • для разработчиков: валидируйте данные на клиентской стороне перед отправкой.

Пример: после отправки JSON без закрывающей скобки сервер вернёт код 400.

401. Описание: необходима аутентификация для доступа.

Что делать:

  • введите логин и пароль в форме авторизации;
  • проверьте, передаются ли токены (API-ключи) в запросе;
  • обновите просроченные сессии и токены.

403. Описание: сервер отказал в доступе из-за недостаточных прав.

Что делать:

  • убедитесь, что у вашего аккаунта есть доступ к ресурсу;
  • проверьте настройки файловых прав на сервере (например, файл .htaccess для Apache);
  • для веб-мастеров: настройте корректные права доступа к директориям.

404. Описание: запрашиваемый ресурс не найден.

Что делать:

  • проверьте URL на опечатки;
  • восстановите удалённую страницу или настройте редирект на действительный адрес;
  • используйте кастомную страницу 404 с подсказками для пользователей.

429. Описание: превышен лимит запросов к серверу (например, при DDoS-атаке или частых обращениях к API).

Что делать:

  • уменьшите частоту запросов;
  • для API: применяйте алгоритмы ограничения (rate limiting);
  • если вы владелец сервера: настройте защиту от ботов (типа Cloudflare).

На стороне сервера

Для исправления ошибок этого типа обычно требуется вмешательство администратора.

500. Описание: общая ошибка сервера по причине сбоя в коде или конфигурации.

Что делать:

  • проверьте логи сервера на предмет фатальных ошибок (например, синтаксис PHP);
  • временно отключите плагины или модули, которые могли вызвать конфликт;
  • для пользователей: обновите страницу через несколько минут.

502. Прокси-сервер (например, Nginx) не получил ответ от upstream-сервера.

Что делать:

  • перезагрузите сервер приложения (например, PHP-FPM);
  • проверьте работоспособность бэкенд-сервисов (БД, API);
  • увеличьте тайм-ауты в настройках прокси.

503. Описание: сервер временно не может обрабатывать запросы (перегрузка, техработы).

Что делать:

  • убедитесь, что на сервере достаточно ресурсов (CPU, RAM);
  • для высоконагруженных сайтов подключите балансировщик нагрузки;
  • если идёт обновление, сообщите пользователям о времени простоя.

504. Описание: прокси не дождался ответа от upstream-сервера.

Что делать:

  • проверьте скорость работы бэкенда (например, оптимизируйте медленные SQL-запросы);
  • увеличьте параметр proxy_read_timeout в Nginx;
  • убедитесь в стабильности сетевых соединений.

Редиректы

Коды 3xx — не ошибки, однако они требуют внимания, чтобы избежать потери трафика или SEO-проблем.

301. Описание: ресурс перемещён на постоянной основе.

Что делать:

  • настройте редирект со старого URL на новый в .htaccess или через панель хостинга;
  • обновите внутренние ссылки на сайте, чтобы исключить цепочки перенаправлений.

302. Описание: временное перенаправление.

  • применяйте для коротких акций (например, временной страницы распродажи);
  • не злоупотребляйте: поисковые роботы могут не обновить индекс.

307 vs 308.

  • 307: сохраняет метод запроса (GET, POST) при временном перенаправлении;
  • 308: аналогичен 301, однако гарантирует сохранение метода запроса.

Совет: для API используйте 307/308 вместо 302/301, если важно сохранить метод.

Общие рекомендации по анализу и реагированию на коды ошибок:

  1. Мониторинг: используйте инструменты вроде UptimeRobot для отслеживания статусов сайта.
  2. Логи: анализируйте логи сервера (например, через Kibana) для выявления закономерностей в ошибках.
  3. Пользовательский опыт: настройте кастомные страницы для кодов 404 и 500 — это удержит посетителей.

Например, если ваш сайт на WordPress часто возвращает 500, отключите плагины через FTP — возможно, это решит проблему.

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

Как узнать код состояния HTTP-запроса

Коды состояния невидимы в обычном режиме, но их легко обнаружить с помощью нескольких инструментов. Разберём популярные способы:

  1. Инструменты разработчика в браузере. Например, в Google Chrome или Firefox:

    • откройте сайт, который хотите проверить;
    • нажмите F12 (или Ctrl+Shift+I) для открытия панели разработчика;
    • перейдите во вкладку Network (Сеть);
    • обновите страницу (Ctrl+R);
    • выберите нужный вам запрос из списка (документ HTML, изображение или API-запрос);
    • во вкладке Headers вы увидите статус ответа в строке Status Code.

    Здесь отображаются все детали: код состояния (например, 200), метод запроса (GET, POST), размер данных и время загрузки. Если произошла ошибка (например, 404), она будет выделена красным цветом.

    Пример:

    Если страница не загрузилась, найдите запрос с кодом 500 или 404 — это укажет на проблему.

  2. Онлайн-сервисы. Для удалённой проверки подойдут:

    • HTTP Status Code Checker (например, httpstatus.io): введите URL, и сервис покажет код ответа, заголовки и другие метаданные;
    • Redirect Checker: помогает отследить цепочку перенаправлений (коды 301, 302).

    Их преимущество — не нужно устанавливать дополнительное ПО. Подходят для быстрой проверки доступности сайта или API.

  3. Командная строка (cURL) — для разработчиков и любителей терминала. Отправляет запросы и выводит сырые данные ответа, включая код состояния. Как использовать:

    • установите cURL (если не установлен);
    • введите команду:

      curl -I https://example.com

    Флаг -I запрашивает только заголовки ответа.

    Пример вывода:

    HTTP/2 200
    server: nginx
    content-type: text/html

    Здесь 200 — код состояния, а server указывает на тип сервера.

    Совет: для анализа API используйте:

    curl -X POST -H "Content-Type: application/json" -d '{"data":"value"}' URL

    Вы увидите, как сервер обрабатывает POST-запросы.

  4. Браузерные расширения типа HTTP Header Live (для Firefox) или Talend API Tester упрощают просмотр кодов:

    • отображают статус каждого запроса в реальном времени;
    • показывают детали: заголовки, куки, время ответа.

    Хорошо подходят для тестирования веб-приложений и REST API.

  5. Логи сервера. Например, в Nginx или Apache в логах есть записи обо всех запросах и соответствующих им кодах состояния.

    Пример строки лога Nginx:

    127.0.0.1 - - [10/Oct/2023:14:32:11 +0300] "GET /test HTTP/1.1" 404 153 "-" "curl/7.68.0" 

    Здесь 404 — код ошибки, а /test — URL, который запрашивался.

  6. Программные инструменты (Postman, Python).

    • Postman: при отправке запроса в этом приложении код состояния отображается рядом с вкладкой Body. Также можно настроить автоматические тесты на проверку статусов.
    • Python: используйте библиотеку requests:

      import requests
      response = requests.get('https://example.com')
      print(response.status_code) # Выведет 200, 404 и т.п.

Подытожим: для определения кода состояния пользователям подойдут браузерные инструменты, разработчикам — cURL или Postman, администраторам — анализ логов. Главное — помнить: код состояния всегда подскажет, куда смотреть, чтобы устранить проблему.

Заключение

Понимание кодов ошибок HTTP упрощает взаимодействие с веб-ресурсами. Клиентские ошибки (4xx) часто решаются проверкой данных, а серверные (5xx) — требуют внимания администратора. Используйте инструменты мониторинга, чтобы оперативно устранять неполадки. Помните: даже неочевидные коды вроде 418 I’m a teapot (шутливый ответ сервера) имеют своё описание в спецификациях протокола. Учитесь читать эти сигналы — и ваш опыт работы с интернетом станет более осознанным!