Der Client hat zu lange gebraucht, um die Anfrage zu senden.
Wann du ihn verwendest
Inaktive Verbindungen. Clients können es gefahrlos erneut versuchen.
Häufige Ursachen und Lösungen
Der Server hat die Verbindung geschlossen, weil der Client nicht rechtzeitig eine vollständige Anfrage gesendet hat. Häufige Ursachen: langsame Mobilfunknetze bei großen Uploads, Verbindungen, die Browser vorsorglich öffnen und dann nichts senden, und Keep-alive-Verbindungen, die länger als das Server-Limit untätig sind. In nginx heißen die Timer client_header_timeout und client_body_timeout, beide standardmäßig 60 Sekunden.
Browser versuchen es transparent erneut, wenn eine inaktive Keep-alive-Verbindung geschlossen wird, daher sehen Benutzer 408 selten; du bemerkst ihn vor allem in den Access-Logs, wo Einträge ohne Request-Zeile von Preconnects stammen und harmlos sind. Bei großen Uploads über langsame Verbindungen erhöhe client_body_timeout oder steig auf fortsetzbare Uploads in Teilstücken um. Clients können gefahrlos erneut senden, da der Server die Anfrage nie verarbeitet hat.
Client-Fehler (4xx)
4xx-Codes sind Client-Fehler: Die Anfrage selbst ist fehlerhaft, nicht autorisiert oder verweist auf etwas, das es nicht gibt. Dieselbe Anfrage erneut zu senden hilft nicht.
So sieht es aus
HTTP/1.1 408 Request TimeoutSo sendest du ihn
| Node.js / Express | res.status(408).end() |
|---|---|
| Python / Flask | return '', 408 |
| nginx | return 408; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/