真是活久见, 竟然遇到了HTTP 416
参照 http://baike.baidu.com/view/1790469.htm ,
416 Requested Range Not Satisfiable 如果请求中包含了 Range 请求头,并且 Range 中指定的任何数据范围都与当前资源的可用范围不重合,同时请求中又没有定义 If-Range 请求头,那么服务器就应当返回416状态码。 假如 Range 使用的是字节范围,那么这种情况就是指请求指定的所有数据范围的首字节位置都超过了当前资源的长度。服务器也应当在返回416状态码的同时,包含一个 Content-Range 实体头,用以指明当前资源的长度。这个响应也被禁止使用 multipart/byteranges 作为其 Content-Type。
实验了一把, 发现原因在于客户端断点下载的时候,Range 头 设置错误。 两种情况可能出现这个错误:
假设文件长度是 100,
1 Range 指定的起始位置超过了 文件大小 : Range: bytes=101-199/100
2 Range 指定的起始位置大于 结束位置 : Range: bytes=50-1/50