длина содержимого при использовании сжатия http - PullRequest
27 голосов
/ 29 сентября 2010

Клиент делает запрос диапазона 0-1023 к http-серверу.Предпочитает сжатие gzip с Accept-Encoding: gzip; q = 1.0, identity;q = 0,5, *; q = 0 в запросе.

Какой будет длина содержимого в заголовке ответа?Это будет 1024 или размер сжатых данных.

Спасибо,

Ответы [ 3 ]

24 голосов
/ 29 сентября 2010

Это меньшее из 1024 или сжатый размер.

RFC2616 раздел 14 говорит:

» [Остальная часть этого ответа не имеет отношения к фактическому заданному вопросу. Я оставляю это, потому что некоторые люди нашли это полезным. ]

В RFC 2616 сказано (помимо прочего) о Content-Length:

Приложения ДОЛЖНЫ использовать это поле для указания длины передачи тело сообщения, если это не запрещено правилами раздела 4.4.

Итак, мы должны выяснить, что такое длина передачи; Раздел 4.4 (Длина сообщения) говорит о двух вещах о длине передачи:

Длина передачи сообщения - это длина тела сообщения, как это появляется в сообщении; то есть после любой кодировки передачи был применен.

Если присутствует поле заголовка Content-Length (раздел 14.13), его десятичное значение в OCTET представляет как длину объекта, так и Передача длины. Поле заголовка Content-Length НЕ ДОЛЖНО отправляться, если эти две длины разные

Итак, мы знаем, что в этом случае длина передачи, длина объекта и длина содержимого имеют одинаковое значение, и все они ссылаются на «длину тела сообщения, как оно появляется в сообщении», и поэтому мы должны определить, что такое тело сообщения. Раздел 4.3 говорит об этом в теле сообщения:

Тело сообщения (если есть) HTTP-сообщения используется для переноса сущность, связанная с запросом или ответом. "

Так что такое сущность-тело? Для этого вы должны обратиться в основном ко всем Разделу 7 . (Который также определяет длину сущности.) Самое главное, вот это:

entity-body: = Content-Encoding (Content-Type (data))

Длина тела объекта (и, следовательно, наше значение для Content-Length на 4.4) - это длина данных после кодирования содержимого.

2 голосов
/ 29 сентября 2010

Фактическая длина содержимого зависит от кодировки передачи и данных: если вы используете identity , сжатие не применяется, а длина содержимого составляет 1024; если вы используете gzip , фактическая длина содержимого зависит от данных, подлежащих сжатию.

1 голос
/ 10 сентября 2013

На самом деле это будет 1024, что является размером сжатых данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...