qubiaobiao
3b4d422e36
fix(download): X-Accel-Redirect 头值须 URL 编码(修复中文名下载 500)
承接 c94d8fe:上一提交把中文名从 400「非法文件路径」放行后,暴露出
同一族 bug 的第二处漏网 —— sendFile.js:98 把含中文的 relativePath
直接拼进 X-Accel-Redirect 头值,Node res.setHeader 抛
ERR_INVALID_CHAR ⇒ 500(生产实测,common-error.log 为铁证)。
该分支仅在 NODE_ENV=production(X-Accel 开启)下命中,本地 dev 走
Node 流分支 ⇒ 永远测不出,典型「本地绿、生产红」陷阱。
修法:内部路径逐段 encodeURIComponent(保留 / 分隔符)得到纯 ASCII
的 internalUri;nginx 按解码后 URI 匹配 internal location,alias 落到
磁盘真实中文文件名。
验证:X-Accel 头编码判别力自证 PASS=7/FAIL=0(旧写法必抛
ERR_INVALID_CHAR;新写法头全 ASCII、逐段解码 == 原路径);
经 nginx 生产端到端 PASS=7/FAIL=0(中文名 200、bytes==磁盘 size、
下载内容 sha256 == 源文件 sha256、RFC5987 头正确);
直连 8023 对照 204/0 字节(反证字节确由 nginx 吐出)。
2026-10-12 09:34:32 +08:00
..
2026-10-09 09:33:05 +08:00
2026-09-22 09:16:55 +08:00
2026-10-08 12:23:18 +08:00
2026-09-29 13:17:53 +08:00
2026-10-09 09:33:05 +08:00
2026-09-21 11:57:58 +08:00
2026-10-10 15:15:37 +08:00
2026-10-12 09:34:32 +08:00
2026-09-30 11:56:35 +08:00
2026-10-09 09:33:05 +08:00