客户端正在向http服务器发出范围请求0-1023。它更喜欢gzip压缩 Accept-Encoding:gzip; q = 1.0,identity; q = 0.5,*; q = 0 在请求中。
响应标头中的内容长度是多少?它是1024还是压缩数据的大小。
谢谢,
答案 0 :(得分:24)
它是1024或压缩大小中的较小者。
” [这个答案的其余部分与提出的实际问题无关。我要离开了,因为有些人发现它很有用。 ]
RFC 2616(包括其他内容)有关Content-Length的说法:
应用程序应该使用此字段来指示传输长度 消息体,除非这部分规则禁止 4.4。
所以我们必须弄清楚转移长度是多少; Section 4.4(消息长度)说这两个关于转移长度的事情:
消息的传输长度是消息体的长度 它出现在信息中;也就是说,在任何转移编码之后 已被应用。
如果存在Content-Length头字段(第14.13节),则为其 OCTET中的十进制值表示实体长度和 转发长度。如果,则不得发送Content-Length头字段 这两个长度是不同的
好的,我们知道在这种情况下,transfer-length,entity-length和Content-Length都具有相同的值,并且都引用“消息中出现的消息体的长度”,所以我们必须确定什么是消息体。 Section 4.3对消息体说:
HTTP消息的消息体(如果有的话)用于携带 与请求或响应相关联的实体主体。“
那么实体是什么?为此,您必须基本上参考所有Section 7。 (这也定义了实体长度。)最重要的是,有这个:
entity-body:= Content-Encoding(Content-Type(data))
实体主体的长度(因此我们的每4.4内容长度的值)是内容编码后数据的长度。
答案 1 :(得分:2)
实际内容长度取决于传输编码和数据:如果使用 identity ,则不应用压缩,内容长度为1024;如果您使用 gzip ,实际内容长度取决于要压缩的数据。
答案 2 :(得分:1)
实际上它将是1024,这是压缩数据的大小。