Открыть сервисСервис

HTTP-ошибка 400 Bad Request

HTTP-ошибка 400 Bad Request — код состояния протокола HTTP, указывающий на то, что сервер не смог обработать запрос из-за некорректного синтаксиса или ошибок со стороны клиента. Код относится к классу клиентских ошибок (4xx) и означает, что проблема возникла не на стороне сервера, а при формировании или передаче запроса. Сервер отклоняет запрос, не пытаясь его обработать, и возвращает клиенту сообщение об ошибке.

Классификация и место в HTTP

Коды состояния HTTP делятся на пять классов: 1xx (информационные), 2xx (успешные), 3xx (перенаправления), 4xx (ошибки клиента) и 5xx (ошибки сервера). Код 400 входит в класс 4xx и официально именуется Bad Request — «некорректный запрос». Он был описан в первом стандарте HTTP (RFC 1945, 1996 год) и сохранён в актуальной версии протокола HTTP/1.1 (RFC 9110).

В стандарте код 400 определяется как «общая ошибка запроса», которую сервер не может обработать из-за некорректного синтаксиса. Это означает, что сервер не нашёл в запросе ошибок в отдельных полях, но запрос в целом непригоден для обработки.

Основные причины возникновения

Ошибка 400 может быть вызвана множеством факторов. Наиболее распространённые причины:

  • Некорректный синтаксис URL — лишние пробелы, недопустимые символы, сломанная кодировка, ошибки при ручном вводе адреса.
  • Слишком большой запрос — превышение лимита размера тела запроса, установленного сервером (например, при загрузке файлов).
  • Ошибки в заголовках запроса — некорректный формат, отсутствие обязательных заголовков, несоответствие значений.
  • Невалидные данные формы — отправка данных, не прошедших проверку на стороне клиента (например, неверный формат даты или email).
  • Ошибки в cookies — повреждённые или устаревшие cookie-файлы, несоответствие ожидаемому формату.
  • Проблемы с кодировкой — запросы с символами, не поддерживаемыми сервером, или с некорректной кодировкой.
  • Конфликты расширений браузера — некоторые расширения модифицируют заголовки запросов, что может приводить к ошибке.

Отличие от других кодов 4xx

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

КодНазваниеЗначение
400Bad RequestОбщая ошибка синтаксиса запроса
401UnauthorizedТребуется аутентификация
403ForbiddenДоступ запрещён, хотя запрос корректен
404Not FoundЗапрашиваемый ресурс не найден
405Method Not AllowedHTTP-метод не поддерживается для ресурса
413Payload Too LargeТело запроса превышает допустимый размер
414URI Too LongURL превышает допустимую длину
429Too Many RequestsПревышен лимит запросов (rate limit)

В отличие от 404, где ресурс существует, но не найден, ошибка 400 означает, что сам запрос не может быть обработан. В отличие от 403, где сервер понимает запрос, но отказывает в доступе, при 400 сервер не может разобраться в запросе.

Как исправить ошибку 400

Для пользователя:

  1. Проверить корректность введённого URL — удалить лишние символы, пробелы, исправить опечатки.
  2. Очистить cookies и кэш браузера — часто помогает при повреждённых cookie-файлах.
  3. Отключить расширения браузера — особенно те, которые модифицируют заголовки запросов.
  4. Разбить большой запрос на несколько меньших — при загрузке файлов или отправке данных.
  5. Проверить формат отправляемых данных — убедиться, что поля заполнены корректно.

Для разработчика:

  1. Проверить логи сервера — там обычно указана конкретная причина отказа.
  2. Валидировать данные на стороне клиента до отправки запроса.
  3. Убедиться в корректности формирования заголовков и тела запроса.
  4. Проверить работу прокси-серверов и CDN — они могут модифицировать запросы.
  5. Использовать инструменты отладки (например, DevTools в браузере) для анализа запроса.

Специфические случаи

Ошибка 400 в Google

Поисковая система Google возвращает ошибку 400 при некорректных поисковых запросах, например, при использовании недопустимых операторов или слишком длинных запросов.

Ошибка 400 в API

REST API часто возвращают 400 с телом ответа, содержащим детали ошибки в формате JSON — например, указание конкретного поля, прошедшего валидацию. Это помогает разработчикам быстро находить причину проблемы.

Ошибка 400 в Nginx

Веб-сервер Nginx возвращает 400 при некорректных запросах, включая проблемы с заголовком Host, некорректный синтаксис запроса или превышение лимита размера заголовков (по умолчанию — 4 КБ на заголовок).

Интересные факты

  • Код 400 — один из самых старых кодов HTTP, описанных ещё в протоколе HTTP/0.9.
  • Некоторые серверы возвращают 400 вместо более специфичных кодов (413, 414), что затрудняет диагностику.
  • В стандарте HTTP/2 и HTTP/3 код 400 сохраняет своё значение, хотя механизмы передачи запросов существенно изменились.

Источники:

  • RFC 9110 — HTTP Semantics
  • RFC 1945 — Hypertext Transfer Protocol — HTTP/1.0
  • MDN Web Docs — HTTP response status codes
  • Документация Nginx — HTTP core module
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru