HTTP实现断点续传
断点续传功能是HTTP/1.1才支持的功能,因此要确保服务器的http版本在HTTP/1.1以上
检测服务器是否具有断点续传功能
使用curl指令指定参数,根据返回值就可以判断;
curl -i --range 100-9000 服务器文件路径
100-9000
:是指定的要现在范围,100表示从文件的第100个字节开始(0开始计数),9000表示下载到第9000个字节(可省略,表示下载到文件结束)
向服务器发送该请求后,服务器会返回响应,如果在响应中能够找到 Content-Range,则表明服务器支持断点续传。
请求和响应的header
- 在客户端发起请求时,需要发
Range
参数,指定第一个字节和最后一个字节的位置,一般格式为:
Range: bytes=start-end
例如:
Range: bytes=0-100 表示文件的第0个字节开始,到第100个字节结束
Range: bytes=-100 表示文件的最后500 字节
Range: bytes=100- 表示从第100字节开始到文件结束
-
在服务器响应时, 会带上参数
Content-Range
头部返回当前接受的范围和文件总大小,一般格式为:Content-Range: bytes start-end/size
用法和上面类似,
size
可以指定文件总大小,不知道直接写成*
-
在响应头上
不使用断点续传返回:HTTP/1.1 200 Ok
使用断点续传:HTTP/1.1 206 Partial Content
未完待续,主要应用python实现服务器和libcurl之间交互