Range头是压缩或未压缩字节的大小(以字节为单位)?

我在node.js中实现了静态文件服务,以获得学习和乐趣。 假设我正在发送一个名为party-time.txt的文件,它是:

 100 bytes uncompressed 70 bytes gzipped 

如果用户请求Range: bytes=-10 ,这是对最后10个未压缩字节(例如91-100)的请求还是最后10个压缩字节(例如61-70)?

作为HTTP协议的一部分,您应该指定内容编码以及内容长度。 内容长度应该与文件相对于您的编码技术的长度相匹配。 例如,如果将Content-Encoding设置为gzip,则用户请求的字节范围应该是对压缩长度的请求。

数据包示例:

 HTTP/1.1 200 OK Date: mon, 28 Aug 2015 22:38:34 GMT Server: <Your server> Last-Modified: mon, 28 Aug 2015 22:38:34 GMT Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; charset=UTF-8 Content-Encoding: gzip 

使用条件或无条件GET方法的HTTP检索请求可以使用Range请求头来请求实体的一个或多个子范围,而不是整个实体,这个范围请求头适用于作为请求结果返回的实体

14.35.2范围检索请求

因为从请求返回的实际实体是gzip编码的数据,所以这些数据被用来派生Content-Length,因此Range被应用于此。