繁体   English   中英

使用http压缩时的内容长度

[英]content-length when using http compression

客户端正在向http服务器发出范围请求0-1023。 它更喜欢使用Accept-Encoding进行gzip压缩:gzip; q = 1.0,identity; 请求中q = 0.5,*; q = 0。

响应头中的内容长度是多少? 它是1024还是压缩数据的大小。

谢谢,

它是1024或压缩大小中的较小者。

RFC2616第14节说:

“[这个答案的其余部分与提出的实际问题无关。我将其留下,因为有些人发现它很有用。]

关于Content-Length,RFC 2616对此(以及其他内容)有这样的说法:

应用程序应该使用此字段来指示消息正文的传输长度,除非4.4节中的规则禁止这样做。

所以我们必须弄清楚转移长度是多少; 第4.4节 (消息长度)说这两个关于传输长度的事情:

消息的传输长度是消息中出现的消息体的长度; 也就是说,在应用任何转移编码之后。

如果存在Content-Length头字段(第14.13节),则其在OCTET中的十进制值表示实体长度和传输长度。 如果这两个长度不同,则不得发送Content-Length头字段

好的,所以我们知道在这种情况下,transfer-length,entity-length和Content-Length都具有相同的值,并且都指的是“消息体中出现的消息体的长度”,所以我们必须确定什么是消息体。 第4.3节说明了关于消息体的内容:

HTTP消息的消息体(如果有的话)用于携带与请求或响应相关联的实体主体。“

那么什么是实体 - 身体? 为此你必须首先参考第7节的所有内容。 (这也定义了实体长度。)最重要的是,有:

entity-body:=内容编码(内容类型(数据))

实体主体的长度(因此我们的每4.4内容长度的值)是内容编码后的数据长度。

实际内容长度取决于传输编码和数据:如果使用标识 ,则不应用压缩,内容长度为1024; 如果使用gzip ,实际内容长度取决于要压缩的数据。

实际上它将是1024,这是压缩数据的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM