美文网首页
Http请求头Range

Http请求头Range

作者: 周_0717 | 来源:发表于2022-06-05 12:31 被阅读0次

    用于请求服务器返回指定部分内容,常用由于断点续传。

    请求格式

    Range: <数据格式>=<数据开始的索引位置>-<数据结束的索引位置>
    具体使用举例:

    请求从0至500的byte数据:Range: bytes=0-500
    请求第500个byte以后的全部数据:Range: bytes=501-
    请求最后500个byte的数据:Range:bytes=-500
    请求多个分段时,各分段以,分割:Range: bytes=0-100,101-200

    判断服务端的支持

    服务端是否支持Range字段以及支持的数据格式,可以通过相应头中的Accept-Range判断,格式为:
    Accept-Ranges:<支持的格式>
    如果相应头中没有返回Accept-Range或者Accept-Range后面的支持格式为none,则表明服务不支持部分返回。
    添加If-Range请求头,将生成条件式范围请求。在服务端支持部分返回,则返回状态码206;否则返回200,并返回完整数据。

    常见的响应码:

    206:支持部分返回,将返回指定部分数据;
    200:不支持部分返回,将从头开始完整返回数据;
    416:请求数据范围不合法;

    成功响应处理

    成功响应后,响应头中将返回Content-Range字段:Content-Range: <数据格式> <数据开始的索引位置>-<数据结束的索引位置>/<完整数据大小>
    如果请求了多个分段数据,将返回多个Content-Range
    需要注意此时的Content-Length不是完成数据大小,而是传输数据大小。

    与Transfer-Encoding分块传输的差别

    Transfer-Encoding在未完全知晓数据大小的情况即可分块发送数据,而使用Range需要服务端在返回响应前就知道数据完整大小,因此Transfer-Encoding的响应速度相应会更快一些。两者不冲突,可以一起使用。

    2022-05-27

    相关文章

      网友评论

          本文标题:Http请求头Range

          本文链接:https://www.haomeiwen.com/subject/miqvprtx.html