功能说明
断点续传和分片下载使用 Content-Range 响应头描述返回的字节区间。该工具提供格式化和解析两个方向,并校验 start、end 与 total 的整数关系,防止生成非法头部。它适合文件服务、对象存储代理和下载器中的分片状态同步。
关键代码
formatContentRange 要求 unit 为 bytes、start 非负、end 不小于 start,total 要么是星号,要么为大于 end 的整数。解析正则捕获三个部分,把星号保留为字符串,其余转数字,再调用格式化函数做统一校验。
const match = /^bytes (\d+)-(\d+)\/(\d+|\*)$/.exec(value.trim());
if (!match) throw new RangeError("invalid Content-Range header");
使用注意
该实现只支持 bytes 单位,不支持 unsatisfied-range 形式 bytes */total。total 为星号时无法判断区间是否完整。解析不校验 Content-Length 是否与区间长度一致。超长数字转换为 Number 可能丢失精度,文件大小应在安全整数范围内。头部值应来自可信响应。
验证方式
断言 formatContentRange({ unit: “bytes”, start: 0, end: 499, total: 1000 }) 返回 bytes 0-499/1000,解析该字符串得到相同对象。total 为星号可往返。end 小于 start 抛 RangeError,total 小于等于 end 抛 RangeError,格式错误抛 RangeError。