Ein Content-Length-Header ist erforderlich.
Wann du ihn verwendest
Uploads ohne angegebene Größe.
Häufige Ursachen und Lösungen
Der Server lehnt eine Anfrage ab, die einen Body, aber keinen Content-Length-Header hat. Das passiert, wenn ein Client mit Transfer-Encoding: chunked an einen Server oder Proxy streamt, der Chunked-Uploads ablehnt, oder einen POST ganz ohne Body und ohne Länge sendet. Google Cloud Storage und einige ältere Server verlangen bekanntermaßen Content-Length: 0 bei leeren POST-Anfragen.
Behebe es auf dem Client: Puffere den Body, damit die Bibliothek die Länge setzen kann, oder setze den Header selbst. curl -d setzt Content-Length automatisch, aber curl -X POST ohne Daten sendet keinen, also ergänze -H Content-Length:0. Bei HTTP/2 und HTTP/3 markieren Frames das Ende des Bodys, das Problem betrifft also nur HTTP/1.1. nginx akzeptiert Request-Bodys mit Chunked-Encoding seit Version 1.3.9.
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 411 Length RequiredSo sendest du ihn
| Node.js / Express | res.status(411).end() |
|---|---|
| Python / Flask | return '', 411 |
| nginx | return 411; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/