HTTPQUERY
Français

411 Length Required

Utilisation

Lorsque le message d’erreur 411 Length Required est reçu, la requête doit être soumise à nouveau en incluant l’en-tête Content-Length. Les requêtes HTTP utilisent généralement cet en-tête pour indiquer la longueur du corps du message, mais pas systématiquement. Par exemple, lorsque le champ d’en-tête Transfer-Encoding est présent et vaut chunked, le champ d’en-tête Content-Length n’est pas requis.

Si le client envoie un flux de données et que ce statut est renvoyé, les données doivent être envoyées à la place sous forme de blocs de taille spécifiée.

Impact SEO

Les moteurs de recherche comme Google n’indexent pas une URL dont la réponse porte le statut 411 Length Required. Les URL précédemment indexées sont retirées des résultats de recherche. Les pages renvoyant ce code ne consomment pas de budget d’exploration.

Exemple

Le client tente d’envoyer un fichier, mais le serveur refuse la requête avec 411 Length Required, car la longueur du corps du message n’est pas précisée.

Requête

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

<PDF file included as message body>

Réponse

HTTP/1.1 411 Length Required

Comment corriger

Ajoutez un en-tête Content-Length indiquant le nombre exact d’octets du corps de la requête. La plupart des bibliothèques clientes HTTP calculent cette valeur automatiquement lors de l’envoi d’une chaîne ou d’un tampon. Vérifiez que la bibliothèque ne supprime pas l’en-tête et n’en fixe pas la valeur à zéro.

Lorsque la requête utilise un Transfer-Encoding chunked, c’est que le serveur cible n’accepte pas les corps chunked. Mettez d’abord en tampon la charge utile complète, mesurez sa longueur en octets, puis envoyez le corps accompagné d’un en-tête Content-Length.

Les proxys et les pare-feu suppriment ou modifient parfois des en-têtes en transit. Si le client envoie correctement Content-Length mais que le serveur renvoie malgré tout 411, inspectez la requête côté serveur pour confirmer que l’en-tête arrive intact.

Dans curl, l’option -d définit Content-Length automatiquement. Pour Transfer-Encoding: chunked avec curl, utilisez -H “Transfer-Encoding: chunked”, mais uniquement lorsque le serveur prend en charge les transferts chunked.

Côté serveur, ce statut est souvent renvoyé par des configurations strictes ou par d’anciens serveurs HTTP/1.0 ne prenant pas en charge l’encodage chunked. L’administrateur du serveur définit cette politique délibérément, et la correction se situe toujours du côté client.

411 dans les outils de test d’API

Des outils comme Postman et curl gèrent l’en-tête Content-Length automatiquement pour la plupart des types de requêtes. Une erreur 411 dans Postman survient typiquement lors de l’envoi d’un corps vide sur une requête POST ou PUT sans avoir sélectionné de type de corps. Choisir un format de corps (raw, form-data ou x-www-form-urlencoded) amène Postman à définir correctement l’en-tête Content-Length.

Références de code

.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