2010-09-29 20 views
23

Il client sta effettuando una richiesta di intervallo 0-1023 sul server http. Preferisce la compressione gzip con Accept-Encoding: gzip; q = 1.0, identity; q = 0.5, *; q = 0 nella richiesta.lunghezza del contenuto quando si utilizza la compressione http

Quale sarebbe la lunghezza del contenuto nell'intestazione della risposta? Sarà 1024 o la dimensione dei dati compressi.

Grazie,

risposta

20

E 'il più piccolo dei 1024 o la dimensione compressa.

RFC2616 section 14 dice:

" [. Il resto di questa risposta non è rilevante per la domanda effettiva chiesto che sto lasciando in perché alcune persone pensano che sia utile.]

RFC 2616 ha questo dire (tra le altre cose) su Content-Length:

applicazioni dovrebbero utilizzare questo campo per indicare il trasferimento di lunghezza del il corpo del messaggio, a meno che ciò è vietato dalle regole nella sezione 012.351.4.4.

Quindi dobbiamo capire quale è la lunghezza del trasferimento; Section 4.4 (Message lunghezza) dice che queste due cose in merito al trasferimento di lunghezza:

Il trasferimento-lunghezza di un messaggio è la lunghezza del messaggio-corpo come appare nel messaggio; cioè, dopo ogni codifica di trasferimento è stato applicato .

Se è presente un campo di intestazione Content-Length (sezione 14.13), il suo valore decimale in OCTET rappresenta sia la lunghezza dell'entità che la lunghezza di trasferimento . Il campo di intestazione Content-Length NON DEVE essere inviato se queste due lunghezze sono diverse

Va bene, quindi sappiamo che in questo caso il trasferimento di lunghezza, entità di lunghezza, e Content-Length hanno tutti lo stesso valore, e tutti si riferiscono a "la lunghezza del messaggio-corpo come appare nel messaggio", e quindi dobbiamo determinare quale messaggio-corpo è. Section 4.3 dice questo di messaggio-corpo:

Il messaggio-corpo (se esiste) di un messaggio HTTP è utilizzato per trasportare il entità-corpo associato con la richiesta o la risposta "

così. che cosa è un'entità-corpo per questo è necessario fare riferimento a praticamente tutti Section 7 (che definisce anche entità di lunghezza.) la cosa più importante, c'è questo:?.

entità-corpo: = Content-Encoding (Content Tipo (dati))

La lunghezza del corpo dell'entità (e quindi il nostro valore per Content-Length per 4.4) è la lunghezza dei dati dopo la codifica del contenuto.

+3

Sbagliato. Stiamo discutendo la codifica del contenuto, non la codifica del trasferimento. Saranno i primi 1024 byte del contenuto * dopo la compressione * gzip. –

+1

Il tuo "sbagliato". non è corretto. Accetterò "Non completamente completo". Ho aggiunto il resto del percorso a Content-Encoding. – pkh

+3

Non è ancora corretto. Se chiedi 1024 byte di una risorsa con Content-Encoding: gzip, è 1024 byte (della risorsa gzip) che otterrai. –

0

La lunghezza effettiva del contenuto dipende dalla codifica e dai dati di trasferimento: Se si utilizza l'identità , non viene applicata alcuna compressione e la lunghezza del contenuto è 1024; se si utilizza gzip, la lunghezza effettiva del contenuto dipende dai dati che devono essere compressi.

1

In realtà sarà 1024 che è la dimensione dei dati compressi.

Problemi correlati