HTTP 400 Bad Request

O erro genérico de cliente: algo na própria requisição está errado, e o servidor se recusa a adivinhar.

O que significa o HTTP 400

HTTP 400 Bad Request significa que o servidor leu a requisição e a rejeitou como inválida antes de fazer qualquer trabalho real. É o erro de cliente genérico: sintaxe malformada, parâmetros inválidos, cookies corrompidos ou cabeçalhos que o servidor se recusa a processar.

Diferente de 401 ou 403, um 400 não diz nada sobre permissões — a requisição estava quebrada na chegada. APIs frequentemente anexam um corpo JSON explicando exatamente qual campo falhou na validação.

Causas comuns de erros 400

  • JSON ou XML malformado no corpo da requisição (vírgulas sobrando, aspas erradas, payload truncado).
  • Parâmetros de consulta ausentes ou inválidos, ou valores falhando na validação do lado do servidor.
  • Cookies corrompidos ou grandes demais — a causa clássica de 400s persistentes em sites grandes para um único usuário.
  • Cabeçalho Content-Type errado, fazendo o servidor analisar o corpo no formato errado.
  • Erros de codificação de URL: espaços, aspas ou caracteres não-ASCII sem escape na string de consulta.

Como corrigir como usuário

  • Recarregue a página; se o 400 persistir, limpe os cookies desse site — cookies corrompidos são a causa mais comum.
  • Verifique a URL em busca de erros de digitação ou caracteres corrompidos ao copiar e colar.
  • Tente uma janela anônima para descartar extensões reescrevendo requisições.

Como corrigir como desenvolvedor

  • Valide os payloads JSON antes de enviar; registre o corpo exato da requisição que o servidor recebeu.
  • Retorne um corpo de resposta que nomeie o campo inválido — um 400 sem explicação desperdiça o tempo de depuração de todos.
  • Verifique os limites do servidor no tamanho de cabeçalhos e cookies (large_client_header_buffers do nginx, etc.).
  • Use 422 para entrada bem formada mas semanticamente inválida se sua API distingue os dois casos.

Exemplo de resposta

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

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

Perguntas frequentes

Um erro 400 é minha culpa como visitante?

Geralmente é causado por cookies desatualizados ou um link quebrado, e não por algo que você fez. Limpar os cookies do site resolve a maioria dos casos.

Qual é a diferença entre 400 e 422?

400 significa que a requisição não pôde ser analisada ou é estruturalmente inválida; 422 significa que ela foi analisada corretamente mas falhou na validação semântica. Muitas APIs usam 400 para ambos.

Por que um usuário recebe 400 enquanto todos os outros estão bem?

Quase sempre cookies grandes demais ou corrompidos no navegador desse usuário excedendo os limites de cabeçalho do servidor.