1b569a38e6a238010b7f4f89eafcdb7e6cb8e721
配套 backend app/utils/sendFile.js 的同一处修复(见该提交):X-Accel-Redirect
分支下 nginx 会丢弃上游自定义响应头 X-File-Size,故后端把同一字节数写进
RFC 6266 §4.1 的 disposition 扩展参数 `size=`(实测 CD 能穿透 X-Accel)。
本提交:
· 新增 readDeclaredSize(headers):先取 x-file-size,缺失或非正数时回落解析
Content-Disposition 的 `; size=<n>`;两通道都取不到返回 NaN(调用方跳过校验,
优雅降级,不误伤)。
· assertRealFile() 改用它,替换原先只读 x-file-size 的 parseInt。
· 判据可靠性:filename*= 的值是百分号编码的,其中不可能出现字面量 `size=`,
且 `size=` 必须落在参数边界(行首或 `;` 之后),故不会与文件名误匹配。
验证:
· 本地判别力自证 verify_cd_size_channel.js:pass=12 fail=0
(F0 断言探针判据与本源码逐字同源;F0b 断言确实经由 readDeclaredSize;
C1 变异测试证明旧形态解不出 ⇒ 判据有判别力;D1/D2/D3 覆盖无误伤边界)
· 生产 ARM B(经 nginx)实测 CD 的 size=19009 穿透成功
(r106_prod_sentinel.js pass=11 fail=0)
Description
No description provided
Languages
Vue
77.3%
JavaScript
20.9%
CSS
1.5%
HTML
0.3%