http斷點續傳
阿新 • • 發佈:2018-03-11
http斷點續傳斷點續傳
從下載斷開的位置,繼續下載,直到下載完整
四個必須的HTTP頭域
-
Range
用於請求頭中,指定第一個字節的位置和最後一個字節的位置,一般格式:
Range:(unit=first byte pos)-[last byte pos]
Range : bytes=50- 從第50個字節開始到最後一個字節
Range : bytes=-70 最後的70個字節
Range : bytes=50-100 從第50字節到100字節 -
Content-Range
用於響應頭,指定整個實體中的一部分的插入位置,他也指示了整個實體的長度。在服務器向客戶返回一個部分響應,它必須描述響應覆蓋的範圍和整個實體長度。一般格式: -
Accept-Ranges
Accept-Ranges:bytes // 告訴客戶端支持斷點傳輸 - Content-Length
內容長度
HTTP返回碼
200 OK(一切正常)
206 Partial Content(服務器已經成功處理了部分內容)
416 Requested Range Not Satisfiable 對方(客戶端)發來的Range 請求頭不合理
實例1
請求:
GET /123.zip HTTP/1.1
響應:
HTTP/1.1 200 OK Accept-Ranges : bytes //告訴客戶端支持斷點傳輸 Content-Length : 1900 //文件總大小 Content-Type : image/jpeg //文件類型
中間停止下載,重新發起請求
請求:
GET /123.zip HTTP/1.1
Range:bytes=580-
響應:
HTTP/1.1 206 Partial Content
Accept-Ranges : bytes
Content-Type : image/jpeg //文件類型
Content-Length : (1900 - 580) //長度則不是總長度了,而580到1900共有多少字節。
Content-Range :bytes 580-(1900-1 ) / 1900 //因為到了文件總大小了,所以指定範圍永遠不能超過等於總大小;但是到了最後一個字節必須輸出出去,完全是寫法問題。
實例2
請求:
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:文件總大小
http斷點續傳