所谓断点续传, 也就是要从文件已经下载的地方开始继续下载. 在以前版本的 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: 文件总大小