2015-08-25 163 views
2

我在node.js中實現靜態文件服務以獲得學習和樂趣。比方說,我送了一個名爲party-time.txt文件,該文件是:Range頭是壓縮或未壓縮字節的大小(以字節爲單位)?

100 bytes uncompressed 

70 bytes gzipped 

如果用戶請求Range: bytes=-10,是在過去的10個壓縮字節(例如,91-100)這個請求,或者是它的最後10個壓縮字節(如61-70)?

回答

1

作爲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 
1

使用條件或無條件的GET方法可以請求實體的一個或多個子範圍,而不是整個實體,使用範圍請求報頭的HTTP檢索請求,這適用於由於請求而返回的實體。

14.35.2 Range Retrieval Requests

因爲實際實體從請求返回是gzip的編碼數據,該數據用於導出內容長度,因此該範圍爲施加對抗。