400 Bad Request é o erro genérico do cliente. O servidor se recusa a processar a requisição porque considera que algo nela está errado: sintaxe malformada, enquadramento inválido da mensagem, roteamento enganoso da requisição, um cabeçalho Host inválido, um parâmetro de query inválido ou um corpo que não pode ser interpretado. O cliente não deve repetir a requisição sem alterações.
Muitos servidores usam o 400 para problemas que têm códigos próprios, mais específicos. O nginx, por exemplo, responde “400 Bad Request: Request Header Or Cookie Too Large” quando os cabeçalhos excedem os buffers dele, caso em que o 431 seria mais preciso, e muitas APIs retornam 400 em erros de validação que poderiam ser 422.
O corpo da resposta costuma ser o melhor lugar para encontrar o motivo real.
Exemplo de resposta
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 e verificação de redirecionamentos
Os mecanismos de busca tratam o 400 como os demais erros 4xx: a URL não é indexada, e uma URL indexada que passa a retornar 400 é removida. Os rastreadores enviam requisições pequenas e padronizadas, sem cookies; por isso, um 400 que só os rastreadores recebem geralmente vem de caracteres incomuns na URL ou de uma regra de firewall. Em uma verificação de redirecionamentos, um 400 no meio da cadeia muitas vezes significa que um redirecionamento gerou uma URL malformada, por exemplo com caracteres codificados duas vezes ou uma query string quebrada.
Causas comuns e casos de uso
- Cookies demais ou grandes demais. Apague os cookies do site ou aumente
large_client_header_buffersno nginx. - Uma URL malformada, com espaços sem codificação, percent-encoding quebrado ou um cabeçalho
Hostinválido. - Uma requisição de API com JSON inválido ou sem parâmetros obrigatórios.
- Uma requisição HTTP simples enviada para uma porta HTTPS, que o nginx informa como “The plain HTTP request was sent to HTTPS port”.