小编典典

如何在 HTTP 中对 Content-Disposition 标头的文件名参数进行编码?

all

想要强制 下载 资源而不是直接在 Web 浏览器中 呈现Content-Disposition的 Web 应用程序会在表单的 HTTP
响应中发出一个标头:

Content-Disposition: attachment; filename= _FILENAME_

filename参数可用于建议浏览器将资源下载到的文件的名称。然而, RFC 2183(Content-Disposition)在第 2.3 节(文件名参数)中声明文件名只能使用 US-ASCII 字符:

当前 [RFC 2045] 语法将参数值(以及因此的 Content-Disposition 文件名)限制为 US-
ASCII。我们认识到允许在文件名中使用任意字符集是非常可取的,但是定义必要的机制超出了本文档的范围。

然而,有经验证据表明,当今大多数流行的 Web 浏览器似乎允许非 US-ASCII
字符(由于缺乏标准)在文件名的编码方案和字符集规范上存在分歧。那么问题是,如果需要将文件名“渘a茂vefile”(不带引号且第三个字母是U+00EF)编码到Content-
Disposition标头中,流行浏览器采用的各种方案和编码是什么? ?


阅读 176

收藏
2022-03-07

共1个答案

小编典典

在提议的RFC 5987 “超文本传输​​协议 (HTTP)
标头字段参数的字符集和语言编码”中对此进行了讨论,包括浏览器测试和向后兼容性的链接。

RFC 2183表明此类标头应根据RFC
2184
进行编码,该标准已被RFC
2231
废弃,由上述 RFC 草案涵盖。

2022-03-07