大附件断点续传下载靠哪个请求头,服务端不支持时会返回什么

📅 2026-10-11 👁️ 0

大附件的断点续传下载靠哪个请求头:靠的是请求头里的 Range。客户端在下一次请求里写明「我要从哪个字节开始」,服务器如果支持范围请求,就用 206 Partial Content 只返回这一段;服务端不支持范围请求时会返回什么是第二个问题——它会直接忽略这个请求头,把整份资源返回并给出 200。理解断点续传失败的原因,关键就在后两种情况的区分上。

三个状态码分别说明什么

按协议文档的口径:有效的范围返回 206,服务器按请求的字节区间给出部分内容;范围无效(例如起始位置超过文件长度)返回 416 Range Not Satisfiable;不支持范围请求的服务器则忽略该头、返回整份资源与 200。

这里最容易误判的是第三种。客户端看到 200 会以为是「自己没带上范围请求头」,实际上服务器已经明确表达了一次「我不支持」。文档也提到,早年的下载工具会看响应头里的 Accept-Ranges: none 来主动关掉暂停与续传功能,但由于「忽略范围请求头」本身就有同样的含义,这种写法现在很少见了。

判断顺序因此很清晰:先发一次 HEAD 或 OPTIONS 请求,看响应里是否有 Accept-Ranges: bytes;有,再谈续传;没有或值为 none,就说明这条链路只能整份重下。

字节偏移从零开始,右端可以省略

范围写法用的是闭区间,起始与结束位置都按字节算,而且计数从零开始。常见写法有三种:只给起始位置表示「从这里到文件末尾」,给完整区间表示一段精确范围,给负数表示「只要末尾那几个字节」。

一个请求头里可以同时写多段,服务器可能以多段文档的形式返回。但对续传来说,更值得利用的是另一条性质:当请求头里只指定单段字节区间时,这个头属于跨域场景下的安全列表请求头,跨域请求不需要先走预检。这正是媒体分段取用与下载器续传常用的组合——单段既好处理,又不会因为跨域多一次往返。

大文件在站点上的两类场景

站里出现「需要续传的大附件」通常是两类。一类是备份文件下载:数据连同静态文件的备份包体积取决于站点内容量,几百兆以上时一次完整下载失败的概率明显上升,能否从断点继续直接决定运维体验。另一类是批量导入的原始包:通过压缩包或表格做批量导入时,上传侧更在意单次请求的体积上限,下载侧才是范围请求的主场。

两类都要注意同一件事:范围请求是否可用,取决于最终吐出文件的那一层。程序自己生成下载响应时按规范写 206 与相关头即可;若前面还挂着网关或缓存,需要确认这一层不会把范围请求整个吞掉或返回不带区间信息的 200。

改完之后建议用三种情形各验一次:从头开始的单段请求、超过文件长度的无效区间(应返回 416)、以及对同一个地址的完整请求(应返回 200 且带 Accept-Ranges: bytes)。三种返回都对,断点续传才算真正可用。

常见问题

问:返回 200 是不是配置错了? 答:不一定。不支持范围请求时忽略该头并返回整份资源是规范允许的行为,此时应改用完整下载,或确认是哪一层不支持。

问:为什么续传时反复拿到整个文件? 答:多半是中间层把范围请求转成了完整请求。逐层核对是否透传该请求头与 206 响应,比只改下载逻辑更有效。

问:一次要多个区间更省吗? 答:多段会引入多文档响应与解析成本。除特殊场景外,续传按单段区间处理更简单,也更容易跨域直连。

相关文章

网页用不到的摄像头和定位能力,怎么在响应头里默认关掉

用 Permissions-Policy 响应头关掉页面用不到的摄像头、麦克风和定位能力,核心是指令的默认允许名单取值只有三种:星号、同源与空。本文说明这条头的生效范围、嵌套框架为什么必须同时出现在父页面名单里,以及 allow 属性只能收窄不能放宽的边界。

2026-10-11

页面因合规要求下架时返回 451,和直接给 404 有什么不一样

因合规要求下架的页面返回 451 还是 404,区别不在页面是否可达,而在状态码把不可用的原因写在了哪一层。本文说明 451 的语义边界、责任方说明该写在响应体还是链接里,以及下架页面在站点地图与内容审核流程中的处理方式。

2026-10-11

开了强制跳HTTPS之后想收回来,进预加载名单的门槛是什么

想把站点的强制跳 HTTPS 收回来,得先分清两层:响应头只对已访问过的浏览器生效,进入预加载名单后门槛是有效期至少一年且必须包含子域。本文说明两者的判定条件、撤销时为什么必须走安全请求,以及站内改配置时该动哪一层。

2026-10-11

上传目录为什么要禁止类型嗅探,两类Web服务器的配置方式有什么差别

上传目录要单独加禁止类型嗅探的响应头,是因为浏览器默认会按内容推断类型,被上传的文件因此可能被当成脚本执行。禁止后浏览器只按声明的类型处理,脚本与样式类请求类型不匹配时会被直接阻止。本文对比 Apache 与 Nginx 在下发这条规则上的差别,并给出部署时的核对顺序。

2026-10-11

内容系统的安全版本一次修掉多项问题,报告方里出现 AI 研究机构,说明什么

一份内容系统的安全发布说明里,多项修复的报告方出现了 AI 研究机构与安全审计公司。这更像是漏洞发现环节的分工在变:辅助审计开始进入披露流程。本文按修复项拆开读这份公告,并给出站点跟进时要核对的三处。

2026-10-11

开源内容系统提前几天挂出安全补丁预告,这几天运维要做哪几件事

安全补丁预告只给时间窗口和风险级别,不给漏洞细节。这几天能做的准备因此很具体:确认模块是否在范围内、把数据与静态文件备份到位、在副本上演练升级路径、准备好发布当天的核对清单,并预留回退与复核的时间。

2026-10-11

表单模块的安全公告只覆盖两段版本区间,站点是先升级还是先关提交功能

一条表单模块的安全公告给出两段受影响区间和两个修复版本,处置顺序应当由所在分支与暴露面决定:能立即升到对应修复版本就先升,升级需要排期时再考虑临时关闭对外提交入口,并记录关闭范围与恢复条件。

2026-10-11

输入过滤被绕过的公告从多年前的版本列到现在,老站怎么排处置顺序

两条输入过滤绕过的公告把受影响版本从多年前的版本一路列到当前分支,评级只给到中等。老站点的处置顺序应当按可升级性与暴露面排:先确认能否升到修复版本,再决定是收窄入口还是规划迁移,并把过滤层与转义层的责任分清。

2026-10-11