2010-05-05 36 views

Respuesta

162

rfc2616

The Content-Length entity-header field indicates the size of the entity-body, 
in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD 
method, the size of the entity-body that would have been sent had the request 
been a GET. 

No importa lo que el tipo de contenido es.

Extensión en post below.

+14

Combina esta respuesta con la respuesta de Tom Cabanski y tienes toda la información que necesitas. En el caso del texto, puede contar la cantidad de caracteres, ya que ASCII tiene 8 bits. – hcpl

+4

@hcpl: pero el texto no siempre es siempre ASCII, también ASCII es de 7 bits, no 8. –

+2

Reemplace ASCII con la codificación que esté utilizando y busque el número de bits que la codificación requiere. Para la respuesta de 7 contra 8 bits; Originalmente era de 7 bits, así que tienes razón de nuevo. Pero hoy se usan 8 bits en la mayoría de los casos (si no en todos) debido a la forma en que se organiza la memoria de la computadora. editar: Releyendo mi respuesta, veo hacia dónde vas. Debería reformular mi comentario original. – hcpl

209

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.

+1

En lugar de "solicitar o responder", ¿no es "el cuerpo de la respuesta" SOLAMENTE? La solicitud no tiene una línea en blanco entre el encabezado y los datos. –

+0

puedo cambiar la longitud del contenido del encabezado de respuesta HTTP presentada en un filtro java – KItis

+2

@ ajfbiw.s Considere una solicitud posterior http. "La presencia de un cuerpo de mensaje en una solicitud se señala mediante la inclusión de un campo de encabezado Content-Length o Transfer-Encoding en los encabezados de mensaje de la solicitud." De https://www.w3.org/Protocols/rfc2616 /rfc2616-sec4.html#sec4.3 –

23

From here:

El Content-Length entidad-header campo indica el tamaño de la entidad-cuerpo, en número decimal de octetos, enviado a el receptor o, en el caso de la El método HEAD, el tamaño del cuerpo de entidad que se habría enviado si la solicitud hubiera sido un GET.

Content-Length = "Content-Length" ":" 1*DIGIT 

Un ejemplo es

Content-Length: 3495 

aplicaciones deben utilizar este campo para indican la transferencia de longitud del mensaje de cuerpo , a menos que esto es prohibida por las reglas en section 4.4.

Cualquier contenido-longitud mayor que 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 .

Nota que el significado de este campo es significativamente diferente de la definición correspondiente en MIME, donde es un campo opcional utiliza dentro de la "mensaje/externa-cuerpo" de tipo de contenido. En HTTP, DEBERÍA ser enviado siempre que la longitud del mensaje pueda se determine antes de ser transferido, a menos que esto esté prohibido según las reglas de la sección 4.4.

Mi interpretación es que esto significa la longitud "en el cable", es decirla longitud de la * codificado" contenido

+7

"En el cable", la longitud se modificará dependiendo de la compresión, pero es correcto decir la longitud antes de comprimirla. – BayssMekanique

+0

Will Content-Length difiere en diferentes tipos de máquinas como Mac/Linux? O ¿diferirá mientras se usa un cliente diferente como curl/cartero ...? –

+1

Suponiendo que todo lo demás permanece igual (por ejemplo, codificación, compresión, etc.), entonces la longitud del contenido debe ser independiente de la plataforma. Este es un encabezado del servidor por lo que, suponiendo que no detecte el agente de usuario y se comporte de manera diferente, el cliente no debe hacer ninguna diferencia. –

3

Según la spec:

El campo de entidad-cabecera Content-Length indica el tamaño de la entidad-cuerpo, en número decimal de octetos, enviado al destinatario o, en el caso del método HEAD, el tamaño de la entidad-cuerpo que se habrían enviado tenía la solicitud ha sido un GET.

Content-Length = "Content-Length" ":" 1*DIGIT 

un ejemplo es

Content-Length: 3495 

Las aplicaciones DEBERÍAN 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 contenido-longitud superior 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.

Nota que el significado de este campo es significativamente diferente de la definición correspondiente en MIME, donde es un campo opcional utilizado dentro de la "mensaje/externa-cuerpo" de tipo de contenido. En HTTP, DEBE enviarse siempre que la longitud del mensaje pueda determinarse antes de ser transferido, a menos que esto esté prohibido por las reglas en la sección 4.4.

33

El encabezado Content-Length es un número que indica la longitud exacta de bytes 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.

Generalmente la cabecera Content-Length se usa para HTTP 1.1 de manera que la parte receptora sabe cuándo la respuesta actual * ha terminado, por lo que el connection can be reused for another request.

* ... o solicitud, en el caso de los métodos de petición que tienen un cuerpo, como POST, PUT o parche

Alternativamente, Content-Length cabecera se puede omitir y una fragmentada Transfer-Encoding header puede ser usado.

Si faltan los dos encabezados Content-Length y Transfer-Encoding, al final de la respuesta, la conexión debe cerrarse.

6

De this page

El uso más común de la POST, por el momento, es enviar datos de formulario HTML para CGI guiones. En este caso, el Content-Type: cabecera suele ser application/x-www-form-urlencoded, y el Content-Length: cabecera da la longitud de la forma de codificación URL datos (aquí está una nota en el URL -codificación). La secuencia de comandos CGI recibe el mensaje cuerpo a través de STDIN y lo descodifica. Aquí está una presentación típica forma, usando POST:

POST /path/script.cgi HTTP/1.0 
From: [email protected] 
User-Agent: HTTPTool/1.0 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 32 
2

El campo de entidad de cabecera Content-Length indica el tamaño de la entidad y el cuerpo, en el número decimal de octetos, enviado al destinatario o, en el caso del método HEAD, el tamaño del cuerpo de entidad que se habría enviado si la solicitud hubiera sido un GET.

Content-Length = "Content-Length" ":" 1 * DIGIT

Un ejemplo es

Content-Length: 1024

aplicaciones deben utilizar este campo para indicar la longitud de transferencia del cuerpo del mensaje.

En PHP utilizaría algo como esto.

header("Content-Length: ".filesize($filename)); 

En caso de "Content-Type: application/x-www-form-urlencoded" los datos codificados se envía al agente procesador designado para que pueda establecer la longitud o el tamaño de los datos que se va a enviar.

34

Un octeto es de 8 bits. Content-length es la cantidad de octetos que representa el cuerpo del mensaje.

+26

Octeto = ¿AKA Byte? – ViniciusPires

+57

@ViniciusPires 'byte' se usa comúnmente para describir la unidad de memoria direccionable más pequeña, que no es necesariamente de 8 bits en todas las arquitecturas. Es por eso que 'octet' se usa para evitar cualquier ambigüedad – PJK

+2

@PJK Bien, gracias. – ViniciusPires

Cuestiones relacionadas