涉及到的Header
- Accept-Ranges
- Range
- If-Range
- Content-Range
Accept-Ranges:
表示自身支持范围请求(partial requests),字段的具体值用于定义范围请求的单位。当客户端发现Accept-Ranges时,可以尝试继续中断了的下载,而不是重新下载。
语法:
Accept-Ranges: bytes
Accept-Ranges: none
具体值有两种,一个是none,一个是bytes,none表示不支持任何范围请求单位,等同于没有这个header,因此很少使用;bytes表示请求的单位是bytes(字节)。
例子:
Accept-Ranges: bytes
Range
一个请求Header,告知服务器返回文件的哪一部分。在一个 Range Header中,可以一次性请求多个部分,服务器会以 multipart 文件的形式将其返回。
如果服务器返回的是范围响应,需要使用 206 状态码(Partial Content)。
假如所请求的范围不合法,那么服务器会返回 416 状态码(Range Not Satisfiable),表示客户端错误。
服务器允许忽略 Range Header,从而返回整个文件,状态码用 200 。
语法:
Range: <unit>=<range-start>-
Range: <unit>=<range-start>-<range-end>