HTTPQUERY
Español

411 Length Required

Uso

Cuando se recibe el mensaje de error 411 Length Required, la solicitud debe reenviarse incluyendo la cabecera Content-Length. Las solicitudes HTTP suelen usar esta cabecera para indicar la longitud del cuerpo del mensaje, aunque no siempre. Por ejemplo, cuando se incluye el campo de cabecera Transfer-Encoding con el valor chunked, el campo Content-Length no es necesario.

Si el cliente está enviando un flujo de datos y se devuelve este estado, los datos deben enviarse en bloques de tamaño especificado.

Impacto en SEO

Los motores de búsqueda como Google no indexan una URL cuya respuesta tiene el estado 411 Length Required. Las URL indexadas previamente se eliminan de los resultados de búsqueda. Las páginas que devuelven este código no consumen presupuesto de rastreo.

Ejemplo

El cliente intenta enviar un archivo, pero el servidor deniega la solicitud con 411 Length Required porque no se especifica la longitud del cuerpo del mensaje.

Solicitud

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

<PDF file included as message body>

Respuesta

HTTP/1.1 411 Length Required

Cómo solucionarlo

Añada una cabecera Content-Length con el número exacto de bytes del cuerpo de la solicitud. La mayoría de las bibliotecas cliente HTTP calculan este valor automáticamente al enviar una cadena o un búfer. Compruebe que la biblioteca no esté eliminando la cabecera ni fijando su valor en cero.

Cuando la solicitud usa Transfer-Encoding fragmentado, significa que el servidor de destino no acepta cuerpos fragmentados. Almacene primero en búfer la carga útil completa, mida su longitud en bytes y envíe el cuerpo con una cabecera Content-Length.

Los proxies y los cortafuegos a veces eliminan o modifican cabeceras durante el tránsito. Si el cliente envía Content-Length correctamente pero el servidor sigue devolviendo 411, inspeccione la solicitud en el lado del servidor para confirmar que la cabecera llega intacta.

En curl, la opción -d establece Content-Length automáticamente. Para Transfer-Encoding: chunked con curl, use -H “Transfer-Encoding: chunked”, pero solo cuando el servidor admita las transferencias fragmentadas.

En el lado del servidor, este estado lo devuelven a menudo configuraciones estrictas o servidores HTTP/1.0 antiguos que no admiten la codificación fragmentada. El administrador del servidor establece esta política de forma deliberada, y la corrección siempre corresponde al lado del cliente.

411 en las herramientas de prueba de API

Herramientas como Postman y curl gestionan la cabecera Content-Length automáticamente para la mayoría de los tipos de solicitud. Un error 411 en Postman suele producirse al enviar un cuerpo vacío en una solicitud POST o PUT sin haber seleccionado un tipo de cuerpo. Elegir un formato de cuerpo (raw, form-data o x-www-form-urlencoded) hace que Postman establezca correctamente la cabecera Content-Length.

Referencias de código

.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