http断点续传
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
用于响应头,指定整个实体中的一部分的插入位置,他也指示了整个实体的长度。在服务器向客户返回一个部分响应,它必须描述响应覆盖的范围和整个实体长度。一般格式:
Content-Range: bytes (unit first byte pos) - [last byte pos]/[entity legth] -
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断点续传的主要内容,如果未能解决你的问题,请参考以下文章