Длина содержимого при использовании сжатия HTTP

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

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

Спасибо,

Ответ 1

Он меньше 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))

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

Ответ 2

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

Ответ 3

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