首页/网络/协议速查/206 Partial Content 部分内容
HTTP 方法与状态码91 条

206 Partial Content 部分内容

响应 Range 请求的片段下载:常见于音视频拖动、断点续传与多线程下载。

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

206 与范围响应

206 Partial Content 是服务端接受范围请求后返回的响应:请求里带 Range 头指定字节区间,响应体只包含这一段内容,并用 Content-Range 标明本次返回的区间以及资源总长度。音视频拖动进度、下载断点续传、多线程分片下载都依赖它。服务端可以选择忽略 Range 直接返回 200 全量,所以客户端必须能处理这种情况。

基本信息

名称206 Partial Content
作用只返回请求的一个或多个字节区间
规范RFC 9110 第 15.3.7 节,范围请求定义见第 14 章
关键响应头Content-Range: bytes 0-999/12345
配套请求头Range 指定区间,If-Range 用于资源变更时退回全量
越界响应请求区间超出资源长度时返回 416 Range Not Satisfiable

请求与校验片段

请求与校验片段
curl -si -r 0-999 https://download.example.com/big.iso | head -8   # 取前 1000 字节
# HTTP/1.1 206 Partial Content
# Content-Range: bytes 0-999/1073741824     # 本次区间 0 到 999,资源总长约 1GB
# Accept-Ranges: bytes                      # 服务端声明支持字节范围
curl -sI https://download.example.com/big.iso | grep -i accept-ranges   # 先确认是否支持续传
curl -si -r 1073741824- https://download.example.com/big.iso | head -1  # 越界:期望 416

输出逐列读法

观察项含义正常与异常
状态码 206服务端接受了范围请求返回 200 说明 Range 被忽略,只能按全量处理
Content-Range本次区间与资源总长缺少总长就无法计算断点位置
Content-Length本次响应体字节数它是片段长度而不是文件总长,别用它判断文件大小
Accept-Ranges是否声明支持字节范围值为 none 或缺失时续传会退化为全量下载
ETag 与 Last-Modified版本校验值续传前用它确认资源没有变化

典型使用场景

  • 视频播放器拖动进度条:只拉取跳转位置附近的片段,不必重新下载整个文件
  • 下载工具断点续传:中断后带上次的偏移继续请求剩余区间
  • 多线程分片下载:按字节区间切开并并行拉取,最后按顺序拼接
  • CDN 边缘回源:只向源站回源缺失的区间,减少回源流量
  • 日志或大文件增量拉取:按偏移量顺序追加,避免重复传输
服务器不支持范围请求时通常忽略 Range 返回 200 全量内容,这属于合法行为;客户端遇到 200 必须放弃分片逻辑并按完整资源处理。
搭配 If-Range 使用更稳:把 ETag 或 Last-Modified 放进 If-Range,资源已变更时服务端会自动返回 200 全量,避免把两个版本的内容拼接在一起。

易错点

  • 把 206 的 Content-Length 当资源总长,多线程下载会算出错误的分片边界并拼出损坏文件
  • 断点续传不校验 ETag 或 Last-Modified,资源更新后仍按旧偏移继续下载,得到前后缝合的坏文件
  • 对实时转码等动态生成的内容使用 Range,源站不支持时表现为播放器反复缓冲
  • CDN 分片缓存与 Range 叠加后命中不同版本的分片,离线视频可能拼接出错,应核对缓存键与回源策略
  • 客户端只处理 206 不处理 416,偏移失效时直接报网络错误,实际原因只是本地记录过期

数据来源与参考

  • RFC 9110 §14 范围请求
  • RFC 9110 §15.3.7 206

相关工具

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