HTTPQUERY
Deutsch

411 Length Required

Verwendung

Wenn die Fehlermeldung 411 Length Required empfangen wird, muss die Anfrage erneut gesendet werden, diesmal mit dem Content-Length-Header. HTTP-Anfragen geben mit diesem Header in der Regel die Länge des Nachrichten-Bodys an, wenn auch nicht immer. Ist zum Beispiel das Header-Feld Transfer-Encoding enthalten und auf chunked gesetzt, ist das Header-Feld Content-Length nicht erforderlich.

Sendet der Client einen Datenstrom und erhält diesen Status zurück, müssen die Daten stattdessen in Blöcken mit angegebener Größe gesendet werden.

SEO-Auswirkung

Suchmaschinen wie Google indexieren keine URL mit dem Antwortstatus 411 Length Required. Zuvor indexierte URLs werden aus den Suchergebnissen entfernt. Seiten, die diesen Code zurückliefern, verbrauchen kein Crawl-Budget.

Beispiel

Der Client versucht, eine Datei zu senden, doch der Server weist die Anfrage mit 411 Length Required zurück, weil die Länge des Nachrichten-Bodys nicht angegeben ist.

Anfrage

PUT /docs HTTP/1.1
Host: example.com
Content-Type: application/pdf

<PDF file included as message body>

Antwort

HTTP/1.1 411 Length Required

Behebung

Fügen Sie einen Content-Length-Header mit der exakten Byte-Anzahl des Anfrage-Bodys hinzu. Die meisten HTTP-Client-Bibliotheken berechnen diesen Wert automatisch, wenn eine Zeichenkette oder ein Puffer gesendet wird. Prüfen Sie, ob die Bibliothek den Header nicht entfernt oder den Wert auf null setzt.

Verwendet die Anfrage chunked Transfer-Encoding, akzeptiert der Zielserver keine Bodys in Chunks. Puffern Sie zuerst die vollständige Nutzlast, ermitteln Sie die Bytelänge und senden Sie den Body stattdessen mit einem Content-Length-Header.

Proxys und Firewalls entfernen oder verändern Header mitunter während der Übertragung. Sendet der Client Content-Length korrekt und der Server liefert dennoch 411 zurück, untersuchen Sie die Anfrage auf Serverseite, um zu bestätigen, dass der Header unversehrt ankommt.

In curl setzt die Option -d Content-Length automatisch. Für Transfer-Encoding: chunked mit curl verwenden Sie -H “Transfer-Encoding: chunked”, allerdings nur dann, wenn der Server Chunked-Übertragungen unterstützt.

Auf Serverseite wird dieser Status häufig von strengen Konfigurationen oder älteren HTTP/1.0-Servern zurückgegeben, die Chunked-Encoding nicht unterstützen. Der Serveradministrator legt diese Richtlinie bewusst fest, und die Lösung liegt stets auf der Client-Seite.

411 in API-Testwerkzeugen

Werkzeuge wie Postman und curl handhaben den Content-Length-Header bei den meisten Anfragetypen automatisch. Ein 411-Fehler in Postman tritt typischerweise auf, wenn bei einer POST- oder PUT-Anfrage ein leerer Body gesendet wird, ohne einen Body-Typ auszuwählen. Durch die Auswahl eines Body-Formats (raw, form-data oder x-www-form-urlencoded) setzt Postman den Content-Length-Header korrekt.

Code-Referenzen

.NET

HttpStatusCode.LengthRequired

Rust

http::StatusCode::LENGTH_REQUIRED

Rails

:length_required

Go

http.StatusLengthRequired

Symfony

Response::HTTP_LENGTH_REQUIRED

Python3.5+

http.HTTPStatus.LENGTH_REQUIRED

Java

java.net.HttpURLConnection.HTTP_LENGTH_REQUIRED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_LENGTH_REQUIRED

Angular

@angular/common/http/HttpStatusCode.LengthRequired