【发布时间】:2011-11-09 06:23:25
【问题描述】:
我正在编写一个返回 base64 编码的 PDF 文件的 Web 服务,所以我的计划是在响应中添加两个标头:
Content-Type: application/pdf
Content-Transfer-Encoding: base64
我的问题是:Content-Transfer-Encoding 是一个有效的 HTTP 标头吗?我认为它可能只适用于 MIME。如果不是,我应该如何制作我的 HTTP 响应来表示我正在返回一个 base64 编码的 PDF 的事实?谢谢。
编辑:
看起来 HTTP 不支持此标头。来自RFC2616 Section 14:
注意:虽然 Content-MD5 的定义与 HTTP 完全相同 就像在 RFC 1864 中的 MIME 实体一样,有几种方法可以 Content-MD5 对 HTTP 实体的应用不同于它的 应用于 MIME 实体。一是 HTTP 与 MIME 不同,它确实 不使用 Content-Transfer-Encoding,并使用 Transfer-Encoding 和 内容编码。
关于我应该将标题设置为什么的任何想法?谢谢。
编辑 2
在这个 PHP 参考手册页的 cmets 中找到的许多代码示例似乎表明它实际上 是一个有效的 HTTP 标头:
【问题讨论】:
-
为什么还要base64编码?
-
我不知道,我刚刚得到了这个项目。它目前正在生产中,因此这是消费者期望它的行为方式。
-
嗯,它不是HTTP头字段,UA忽略它,base64编码真的没用; HTTP 允许二进制传输。
-
base64 编码没有意义; HTTP 允许二进制负载,因此 HTTP 中不存在 Content-Transfer-Encoding。
-
@Potaswatter:Web 浏览器几十年来一直没有遇到二进制数据问题,否则它们不会显示 GIF 和 JPG。