HTTP 400 Bad Request

Общая клиентская ошибка: что-то не так с самим запросом, и сервер отказывается угадывать, что именно.

Что означает HTTP 400

HTTP 400 Bad Request означает, что сервер прочитал запрос и отклонил его как недопустимый, ещё до какой-либо реальной работы. Это универсальная клиентская ошибка: некорректный синтаксис, недопустимые параметры, повреждённые куки или заголовки, которые сервер отказывается обрабатывать.

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

Частые причины ошибок 400

  • Некорректный JSON или XML в теле запроса (лишние запятые, неверные кавычки, обрезанная полезная нагрузка).
  • Отсутствующие или недопустимые параметры запроса, либо значения, не прошедшие серверную валидацию.
  • Повреждённые или слишком большие куки — классическая причина устойчивых 400 на крупных сайтах у одного конкретного пользователя.
  • Неверный заголовок Content-Type, из-за чего сервер разбирает тело как неправильный формат.
  • Ошибки URL-кодирования: неэкранированные пробелы, кавычки или не-ASCII символы в строке запроса.

Как исправить со стороны пользователя

  • Перезагрузите страницу; если 400 сохраняется, очистите куки для этого сайта — повреждённые куки самая частая причина.
  • Проверьте URL на опечатки или символы, повреждённые при копировании-вставке.
  • Попробуйте окно в режиме инкогнито, чтобы исключить расширения, изменяющие запросы.

Как исправить со стороны разработчика

  • Проверяйте JSON-полезную нагрузку перед отправкой; логируйте точное тело запроса, полученное сервером.
  • Возвращайте тело ответа с указанием недопустимого поля — голый 400 тратит время всех, кто занимается отладкой.
  • Проверьте серверные лимиты на размер заголовков и кук (nginx large_client_header_buffers и т.п.).
  • Используйте 422 для корректно сформированных, но семантически недопустимых данных, если ваш API их различает.

Пример ответа

HTTP/1.1 400 Bad Request
Content-Type: application/json

{"error":"validation_failed","field":"email","message":"not a valid address"}

Частые вопросы

Моя ли это вина как посетителя при ошибке 400?

Обычно причина в устаревших куках или неисправной ссылке, а не в чём-то, что сделали вы. Очистка кук для сайта устраняет большинство случаев.

В чём разница между 400 и 422?

400 означает, что запрос не удалось разобрать или он структурно недопустим; 422 означает, что он разобран корректно, но не прошёл смысловую валидацию. Многие API используют 400 для обоих случаев.

Почему один пользователь получает 400, а у всех остальных всё в порядке?

Почти всегда — слишком большие или повреждённые куки в браузере этого пользователя, превышающие лимиты заголовков на сервере.