Respuestas:
El campo de encabezado de entidad de longitud de contenido indica el tamaño del cuerpo de la entidad, en número decimal de OCTET, enviado al destinatario o, en el caso del método HEAD, el tamaño del cuerpo de la entidad que habría sido enviado la solicitud ha sido un OBTENER.
No importa cuál sea el tipo de contenido.
Extensión en la publicación a continuación .
Es el número de bytes de datos en el cuerpo de la solicitud o respuesta. El cuerpo es la parte que viene después de la línea en blanco debajo de los encabezados.
El Content-Length
encabezado es un número que indica la longitud de byte exacta del cuerpo HTTP. El cuerpo HTTP comienza inmediatamente después de la primera línea vacía que se encuentra después de la línea de inicio y los encabezados.
En general, el Content-Length
encabezado se usa para HTTP 1.1 para que la parte receptora sepa cuándo ha finalizado la respuesta * actual , de modo que la conexión se puede reutilizar para otra solicitud .
* ... o solicitud, en el caso de los métodos de solicitud que tienen un cuerpo, como POST, PUT o PATCH
Alternativamente, Content-Length
se puede omitir el Transfer-Encoding
encabezado y se puede usar un encabezado fragmentado .
Si faltan ambos Content-Length
y los Transfer-Encoding
encabezados, al final de la respuesta se debe cerrar la conexión.
El siguiente recurso es una guía que encontré muy útil cuando aprendí sobre HTTP:
Un octeto es de 8 bits. La longitud del contenido es el número de octetos que representa el cuerpo del mensaje.
OCTET
aquí tiene un significado muy específico que significa <cualquier secuencia de datos de 8 bits>. Consulte la definición en w3.org/Protocols/rfc2616/rfc2616-sec2.html#sec2.2
El campo de encabezado de entidad de longitud de contenido indica el tamaño del cuerpo de la entidad, en número decimal de OCTET, enviado al destinatario o, en el caso del método HEAD, el tamaño del cuerpo de la entidad que habría sido enviado la solicitud ha sido un OBTENER.
Content-Length = "Content-Length" ":" 1*DIGIT
Un ejemplo es
Content-Length: 3495
Las aplicaciones DEBEN usar este campo para indicar la longitud de transferencia del cuerpo del mensaje, a menos que esto esté prohibido por las reglas en la sección 4.4 .
Cualquier longitud de contenido mayor o igual a cero es un valor válido. La sección 4.4 describe cómo determinar la longitud de un cuerpo de mensaje si no se proporciona una longitud de contenido.
Tenga en cuenta que el significado de este campo es significativamente diferente de la definición correspondiente en MIME, donde es un campo opcional utilizado dentro del tipo de contenido "mensaje / cuerpo externo". En HTTP, DEBE enviarse siempre que se pueda determinar la longitud del mensaje antes de ser transferido, a menos que esto esté prohibido por las reglas en la sección 4.4.
Mi interpretación es que esto significa la longitud "en el cable", es decir, la longitud del contenido codificado *
"Content-length": "3495"
De esta página
El uso más común de POST, con mucho, es enviar datos de formulario HTML a scripts CGI. En este caso, el encabezado Content-Type: generalmente es application / x-www-form-urlencoded, y el encabezado Content-Length: proporciona la longitud de los datos del formulario codificados en URL (aquí hay una nota sobre la codificación de URL). El script CGI recibe el cuerpo del mensaje a través de STDIN y lo decodifica. Aquí hay un envío de formulario típico, usando POST:
POST /path/script.cgi HTTP/1.0 From: frog@jmarshall.com User-Agent: HTTPTool/1.0 Content-Type: application/x-www-form-urlencoded Content-Length: 32
De acuerdo con la especificación :
El campo de encabezado de entidad de longitud de contenido indica el tamaño del cuerpo de la entidad, en número decimal de OCTET, enviado al destinatario o, en el caso del método HEAD, el tamaño del cuerpo de la entidad que habría sido enviado la solicitud ha sido un OBTENER.
Content-Length = "Content-Length" ":" 1*DIGIT
Un ejemplo es
Content-Length: 3495
Las aplicaciones DEBEN usar este campo para indicar la longitud de transferencia del cuerpo del mensaje, a menos que esto esté prohibido por las reglas en la sección 4.4.
Cualquier longitud de contenido mayor o igual a cero es un valor válido. La sección 4.4 describe cómo determinar la longitud de un cuerpo de mensaje si no se proporciona una longitud de contenido.
Tenga en cuenta que el significado de este campo es significativamente diferente de la definición correspondiente en MIME, donde es un campo opcional utilizado dentro del tipo de contenido "mensaje / cuerpo externo". En HTTP, DEBE enviarse siempre que se pueda determinar la longitud del mensaje antes de ser transferido, a menos que esto esté prohibido por las reglas en la sección 4.4.
El campo de encabezado de entidad de longitud de contenido indica el tamaño del cuerpo de la entidad, en número decimal de OCTET, enviado al destinatario o, en el caso del método HEAD, el tamaño del cuerpo de la entidad que habría sido enviado la solicitud ha sido un OBTENER.
Content-Length = "Content-Length" ":" 1 * DIGIT
Un ejemplo es
Longitud del contenido: 1024
Las aplicaciones DEBEN usar este campo para indicar la longitud de transferencia del cuerpo del mensaje.
En PHP usarías algo como esto.
header("Content-Length: ".filesize($filename));
En el caso de "Content-Type: application / x-www-form-urlencoded", los datos codificados se envían al agente de procesamiento designado para que pueda establecer la longitud o el tamaño de los datos que va a publicar.
Considere si tiene encabezados como:
content-encoding: gzip
content-length: 52098
content-type: text/javascript; charset=UTF-8
La longitud del contenido es el tamaño del cuerpo del mensaje comprimido , en "octetos" (es decir, en unidades de 8 bits, que resultan ser "bytes" para todas las computadoras modernas).
El tamaño del cuerpo del mensaje real puede ser algo más, quizás 150280 bytes.
El número de caracteres puede ser diferente nuevamente, quizás 150231 caracteres, porque algunos caracteres unicode usan múltiples bytes (tenga en cuenta que UTF-8 es una codificación estándar).
Por lo tanto, diferentes números dependiendo de si le importa la cantidad de datos que se transmiten, la cantidad de datos almacenados o la cantidad de símbolos que se ven. Por supuesto, no hay garantía de que se proporcionen estos encabezados.