1. 背景知识
- MIME媒体类型(Multipurpose Internet Mail Extension,多用途因特网邮件扩展):是描述报文实体主体内容的一些标准化名称。最初设计 MIME是为了解决在不同的电子邮件系统之间搬移报文时存在的问题。MIME 在电子邮件系统中工作得非常好,因此 HTTP 也采纳了它,用它来描述并标记多媒体内容。
- Web 服务器会为所有 HTTP 对象数据附加一个 MIME 类型。
- 当 Web 浏览器从服务器中取回一个对象时,会去查看相关的 MIME 类型,看看它是否知道应该如何处理这个对象。
- 大多数浏览器都可以处理数百种常见的对象类型:显示图片文件、解析并格式化 HTML 文件、通过计算机声卡播放音频文件,或者运行外部插件软件来处理特殊格式的数据。
- MIME 类型是一种文本标记,表示一种主要的对象类型和一个特定的子类型,中间由一条斜杠来分隔。常见的 MIME 类型有数百个,实验性或用途有限的 MIME 类型则更多。
常见类型:
- HTML 格式的文本文档由 text/html 类型来标记。
- 普通的 ASCII 文本文档由 text/plain 类型来标记。
- JPEG 格式的图片为 image/jpeg 类型。
- GIF 格式的图片为 image/gif 类型。
- Apple 的 QuickTime 电影为 video/quicktime 类型。
- 微软的 PowerPoint 演示文件为 application/vnd.ms-powerpoint 类型。
MIME 主要由下列 5 份文档定义:
- RFC 2045,“MIME: Format of Internet Message Bodies”(“MIME: 因特网报文主体的格式”):
描述了 MIME 报文结构的概况,并介绍了 HTTP 借用的 Content-Type 首部。 - RFC 2046,“MIME: Media Types”(“MIME:媒体类型”):
介绍了 MIME 类型及其结构。 - RFC 2047,“MIME: Message Header Extensions for Non-ASCII Text”(“MIME: 非 ASCII 文本的报文首部扩展”):
定义了一些在首部包含非 ASCII 字符的方式。 - RFC 2048,“MIME: Registration Procedures”(“MIME:注册过程”):
定义了如何向因特网号码分配机构(“Internet Assigned Numbers Authority,IANA”)注册 MIME 值。 - RFC 2049,“MIME: Conformance Criteria and Examples”(“MIME:一致性标准及实例”):
详细介绍了一致性规则,并提供了一些实例。
根据 HTTP 的目标,我们最感兴趣的文档是 RFC 2046 和 RFC 2048。
- RFC 2045,“MIME: Format of Internet Message Bodies”(“MIME: 因特网报文主体的格式”):
2. MIME类型结构
- 每种 MIME 媒体类型都包含类型、子类型和可选参数的列表。类型和子类型由一个斜杠分隔,如果有可选参数的话,则以分号开始。
- 在 HTTP 中,MIME 媒体类型被广泛用于 Content-Type 和 Accept 首部。比如:
Content-Type: video/quicktime
Content-Type: text/html; charset&