400 Bad Request ist der allgemeine Client-Fehler. Der Server weigert sich, die Anfrage zu verarbeiten, weil er etwas daran für fehlerhaft hält: fehlerhafte Syntax, ein ungültiges Message-Framing, irreführendes Request-Routing, einen falschen Host-Header, einen ungültigen Query-Parameter oder einen Body, der sich nicht parsen lässt. Der Client sollte die Anfrage nicht unverändert wiederholen.
Viele Server verwenden 400 auch für Probleme, für die es eigene, genauere Codes gibt. So antwortet nginx etwa mit „400 Bad Request: Request Header Or Cookie Too Large“, wenn die Header seine Puffer überschreiten, obwohl 431 präziser wäre, und viele APIs liefern 400 bei Validierungsfehlern, für die 422 passen würde.
Den tatsächlichen Grund findet man meist am ehesten im Body der Antwort.
Beispielantwort
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 und Weiterleitungsprüfung
Suchmaschinen behandeln 400 wie andere 4xx-Fehler: Die URL wird nicht indexiert, und eine indexierte URL, die plötzlich 400 liefert, wird aus dem Index entfernt. Crawler senden kleine Standardanfragen ohne Cookies. Ein 400, den nur Crawler erhalten, geht daher meist auf ungewöhnliche Zeichen in einer URL oder auf eine Firewall-Regel zurück. Steht bei einer Weiterleitungsprüfung ein 400 mitten in der Kette, hat oft eine Weiterleitung eine fehlerhafte URL erzeugt, zum Beispiel mit doppelt kodierten Zeichen oder einem defekten Query-String.
Häufige Ursachen und Einsatzzwecke
- Zu viele oder zu große Cookies. Löschen Sie die Cookies der Website, oder erhöhen Sie in nginx
large_client_header_buffers. - Eine fehlerhafte URL, etwa mit nicht kodierten Leerzeichen, defekter Prozentkodierung oder einem ungültigen
Host-Header. - Eine API-Anfrage mit ungültigem JSON oder fehlenden Pflichtparametern.
- Eine unverschlüsselte HTTP-Anfrage an einen HTTPS-Port, die nginx mit „The plain HTTP request was sent to HTTPS port“ quittiert.