所謂斷點續傳,也就是要從檔案已經下載的地方開始繼續下載。在以前版本的 HTTP 協議是不支援斷點的,HTTP/1.1 開始就支援了。一般斷點下載時才用到 Range 和 Content-Range 實體頭。
Range
用於請求頭中,指定第一個位元組的位置和最後一個位元組的位置,一般格式:
Range:(unit=first byte pos)-[last byte pos]
Content-Range
用於響應頭,指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在伺服器向客戶返回一個部分響應,它必須描述響應覆蓋的範圍和整個實體長度。一般格式:
Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth]
請求下載整個檔案:
- GET /test.rar HTTP/1.1
- Connection: close
- Host: 116.1.219.219
- Range: bytes=0-801 //一般請求下載整個檔案是bytes=0- 或不用這個頭
一般正常回應
- HTTP/1.1 200 OK
- Content-Length: 801
- Content-Type: application/octet-stream
- Content-Range: bytes 0-800/801 //801:檔案總大小