2010-09-29 14 views
23

El cliente está realizando una solicitud de rango 0-1023 al servidor http. Prefiere la compresión gzip con Aceptar-Codificar: gzip; q = 1.0, identidad; q = 0.5, *; q = 0 en la solicitud.content-length al usar la compresión http

¿Cuál sería la longitud del contenido en el encabezado de respuesta? ¿Será 1024 o el tamaño de los datos comprimidos?

Gracias,

Respuesta

20

Es el menor de 1024 o el tamaño comprimido.

RFC2616 section 14 dice:

" [. El ​​resto de esta respuesta no guarda relación con la cuestión real se le preguntó lo estoy dejando en porque algunas personas encuentran útil.]

RFC 2616 tiene esta decir (entre otras cosas) sobre Content-Length:

aplicaciones deben utilizar este campo para indicar la transferencia de longitud de el mensaje y el cuerpo, a menos que esté prohibido por las normas de la sección4.4.

Así que tenemos que averiguar qué longitud de transferencia es; Section 4.4 (longitud del mensaje) dice que estas dos cosas acerca de la transferencia de longitud:

La transferencia de longitud de un mensaje es la longitud del mensaje de cuerpo como que aparece en el mensaje; es decir, después de cualquier codificación de transferencia se ha aplicado .

Si está presente un campo de encabezado Content-Length (sección 14.13), su valor decimal en OCTET representa la longitud de la entidad y la longitud de transferencia . El campo de cabecera Content-Length NO DEBE ser enviada si estas dos longitudes son diferentes

bien, así que sabemos que en este caso la transferencia de longitud, entidad de longitud, y Content-Length todos tienen el mismo valor, y todos se refieren a "la longitud del cuerpo del mensaje tal como aparece en el mensaje", por lo que debemos determinar qué cuerpo del mensaje es. Section 4.3 dice esto acerca de cuerpo de mensaje:

El cuerpo de mensaje (si existe) de un mensaje HTTP se utiliza para llevar el entidad corporal asociado con la petición o la respuesta "

Así. lo que es una entidad de cuerpo para que usted tiene que hacer referencia a básicamente todos Section 7 (que también la definición del órgano de longitud.) lo más importante, hay esto:?.

entidad de cuerpo: = Content-Encoding (Content Tipo (datos))

La longitud del cuerpo de la entidad (y, por lo tanto, nuestro valor para Content-Length por 4.4) es la longitud de los datos después de la codificación del contenido.

+3

Incorrecto. Estamos hablando de codificación de contenido, no de codificación de transferencia. Serán los primeros 1024 bytes del contenido * después de la compresión * gzip. –

+1

Su "incorrecto". Es incorrecto. Aceptaré "No del todo completo". He agregado el resto del camino a Content-Encoding. – pkh

+3

Todavía es incorrecto. Si solicita 1024 bytes de un recurso con Content-Encoding: gzip, obtendrá 1024 bytes (del gzip). –

0

La longitud real del contenido depende de la codificación y los datos de la transferencia: si usa la identidad , no se aplica compresión y la longitud del contenido es 1024; si usa gzip, la longitud real del contenido depende de los datos que se van a comprimir.

1

En realidad, será 1024, que es el tamaño de los datos comprimidos.

Cuestiones relacionadas