400 Bad Request is de algemene clientfout. De server weigert het verzoek te verwerken, omdat hij er iets mis mee vindt: ongeldige syntaxis, een ongeldige berichtopbouw (framing), misleidende routering van het verzoek, een foute Host-header, een ongeldige queryparameter of een body die niet te parsen is. De client hoort het verzoek niet ongewijzigd te herhalen.
Veel servers gebruiken 400 voor problemen die een eigen, specifiekere code hebben. nginx antwoordt bijvoorbeeld met “400 Bad Request: Request Header Or Cookie Too Large” als de headers groter zijn dan zijn buffers, terwijl 431 preciezer zou zijn, en veel API’s geven 400 terug bij validatiefouten waarvoor 422 zou kunnen.
De body van de response is meestal de beste plek om de echte oorzaak te vinden.
Voorbeeldresponse
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 en redirects controleren
Zoekmachines behandelen 400 als andere 4xx-fouten: de URL wordt niet geïndexeerd, en een geïndexeerde URL die 400 gaat teruggeven, verdwijnt uit de index. Crawlers sturen kleine, standaard verzoeken zonder cookies, dus een 400 die alleen crawlers krijgen, komt meestal door ongebruikelijke tekens in een URL of door een firewallregel. Bij een redirectcontrole betekent een 400 midden in een keten vaak dat een redirect een ongeldige URL heeft opgeleverd, bijvoorbeeld met dubbel gecodeerde tekens of een kapotte querystring.
Veelvoorkomende oorzaken en toepassingen
- Te veel of te grote cookies. Wis de cookies van de site, of verhoog
large_client_header_buffersin nginx. - Een ongeldige URL, zoals niet-gecodeerde spaties, kapotte percent-encoding of een ongeldige
Host-header. - Een API-verzoek met ongeldige JSON of ontbrekende verplichte parameters.
- Een gewoon HTTP-verzoek naar een HTTPS-poort, wat nginx meldt als “The plain HTTP request was sent to HTTPS port”.