400 Bad Request — общая ошибка клиента. Сервер отказывается обрабатывать запрос, потому что видит в нем ошибку: неправильный синтаксис, некорректное формирование сообщения, обманную маршрутизацию запроса, неверный заголовок Host, недопустимый параметр в строке запроса или тело, которое не удается разобрать. Повторять запрос без изменений клиенту не следует.
Многие серверы используют 400 для проблем, у которых есть собственные, более точные коды. Например, nginx отвечает «400 Bad Request: Request Header Or Cookie Too Large», когда заголовки не помещаются в его буферы, хотя точнее был бы 431, а многие API возвращают 400 при ошибках валидации, для которых подошел бы 422.
Настоящую причину обычно проще всего найти в теле ответа.
Пример ответа
HTTP/1.1 400 Bad Request
Date: Fri, 06 Nov 2026 10:15:32 GMT
Server: nginx
Content-Type: text/html
Content-Length: 217
Connection: close
<html>
<head><title>400 Request Header Or Cookie Too Large</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<center>Request Header Or Cookie Too Large</center>
<hr><center>nginx</center>
</body>
</html> SEO и проверка редиректов
Поисковые системы обрабатывают 400 так же, как другие ошибки 4xx: URL не индексируется, а уже проиндексированный URL, который начал отдавать 400, выпадает из индекса. Поисковые роботы отправляют небольшие стандартные запросы без cookie, поэтому ошибка 400, которую получают только они, обычно вызвана необычными символами в URL или правилом файрвола. При проверке редиректов 400 в середине цепочки часто означает, что редирект сформировал некорректный URL — например, с дважды закодированными символами или испорченной строкой запроса.
Типичные причины и сценарии использования
- Слишком много cookie или слишком большие cookie. Удалите cookie сайта или увеличьте
large_client_header_buffersв nginx. - Некорректный URL: незакодированные пробелы, ошибки в процентном кодировании или недопустимый заголовок
Host. - Запрос к API с невалидным JSON или без обязательных параметров.
- Обычный HTTP-запрос отправлен на HTTPS-порт; nginx сообщает об этом так: «The plain HTTP request was sent to HTTPS port».