首页/网络/协议速查/Accept-Ranges 范围支持声明
HTTP 头与缓存70 条

Accept-Ranges 范围支持声明

声明服务器对资源支持的范围单位(bytes)或明确不支持(none),下载器据此决定是否启用断点续传。

协议速查网络更新于 2026-10-13

Accept-Ranges 是什么

Accept-Ranges 是响应头,用来声明服务端对某个资源支持的范围请求单位。值为 bytes 表示支持按字节请求片段,值为 none 表示明确不支持。下载器、测速工具与客户端更新组件据此决定是否启用断点续传与多线程下载,而不必先发一个 Range 请求去试探。

基本信息

名称Accept-Ranges
作用声明是否支持范围请求
规范RFC 9110 §14.3
取值bytes 或 none
是否必需否,头缺失时需实测判断
配套响应206 状态码配合 Content-Range 使用

响应组合判读

响应特征含义处理建议
带 bytes 且 Range 返回 206支持范围请求可启用续传与多线程
带 none明确不支持范围请求改用单连接整体下载
头缺失但 Range 返回 206实际支持,只是没声明按 206 的实际结果处理
头缺失且 Range 返回 200忽略范围,返回完整内容不要按偏移写入

检测续传支持

检测续传支持
curl -sI https://download.example.com/f.bin | grep -i accept-ranges
# accept-ranges: bytes   → 支持断点续传
# accept-ranges: none    → 不支持
curl -si -r 0-99 https://download.example.com/f.bin | head -5   # 实测确认

典型使用场景

  • 发布系统与大文件分发:确认客户端能否断点续传,决定失败重试策略
  • 测速工具对接:部分工具依据该头选择分片下载方式
  • CDN 回源配置核查:确认边缘与源站对范围请求的支持是否一致
  • 客户端更新组件开发:把「不支持续传」作为一条明确的降级路径处理
  • 排障下载失败:区分是服务端不支持范围请求,还是客户端使用方式有误
同一站点上静态文件与动态内容的表现常常不同:前者多返回 bytes,后者因为内容边生成边发送而返回 none。中间层也可能重写这个头,因此出现「直连源站可以续传、经过 CDN 就不行」这类现象时,应逐层核对响应头,而不是只测一个入口。下载工具读到 none 或实测返回 200 时,应自动降级为单连接下载并重新开始。

易错点

  • 只看 Accept-Ranges 就断言支持:头缺失时服务端仍可能按范围返回片段,反之也需实测
  • 把动态接口当静态文件用多线程下载:内容逐次生成,片段之间并不连续
  • CDN 缓存了首次响应的头,源站改成支持范围请求后边缘仍在返回旧声明
  • 客户端不检查实际状态码就按片段拼接,收到完整内容时直接写坏文件

数据来源与参考

  • RFC 9110 §14.3 Accept-Ranges

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌