双语方案正文完全正常,下载文件名仍可能乱码。文件内容与服务器建议保存名是两件事,应约定安全英文后备名和国际化文件名,而不是每次客户投诉后手动改名。
官方依据与范围
Content-Disposition支持filename*编码;客户端理解两者时优先采用filename*。 官方参考 · 2026年10月17日核对.
已填写的合成验收例子
合成教学例子,不是真实客户案例或真实平台测评。窄屏可横向滚动查看完整表格。
| 输入 | 核对口径 | 预期 |
|---|---|---|
| 英文后备proposal.pdf;UTF-8报价.pdf | 国际化名称 | 拟显示报价.pdf |
| 浏览器不支持国际化字段 | 仍有安全后备 | proposal.pdf |
| 建议路径../报价.pdf | 不可信路径 | 拒绝路径,不能作存储地址 |
可执行的交付检查
- 把文档身份、访问权限与显示文件名分开。
- 对同一个合成文件记录响应头、语言、浏览器及实际保存名。
- 测试英文后备、中文和拒绝分隔符,不能直接插入客户提供的路径。
怎样解释输出
附带检查只证明UTF-8名称能往返编解码,不保证所有浏览器保存名相同。验收须记录支持浏览器的实际结果;它不同于CSV内容编码,正文正常不代表下载名称正确。
明确的适用边界
不是完整响应头解析器、路径净化器、跨域下载修复或文档权限实现,不使用真实客户文件。
复核有限教学模型
保存两份文件到同一目录,用Node22或更新版本运行下面命令。JSON包含输入与预期;脚本仅处理合成数据,无网络、密钥、付款或付费API调用。通过不等于真实系统已经通过验收。
node check.mjs bilingual-download-filename-header.json