MIME 类型
用于识别文件和数据类型的标准分类系统。以 type/subtype 格式表示。
MIME 类型 (Multipurpose Internet Mail Extensions) 是互联网上用于识别文件和数据类型的标准分类系统。以 type/subtype 格式表示,如 text/html、application/json 和 image/png。最初是为通过电子邮件发送非文本数据而制定的规范,现已广泛应用于 HTTP 通信等各种互联网协议。
在 HTTP 通信中,通过在 Content-Type 头中指定 MIME 类型,浏览器和客户端可以判断如何处理数据。例如,Content-Type: text/html; charset=utf-8 告诉浏览器将响应解释为 UTF-8 编码的 HTML。错误的 MIME 类型可能导致 CSS 不生效 (返回 text/plain 而非 text/css) 或 JavaScript 不执行等问题。浏览网袜 (Amazon)详细介绍了这个主题。
主要的 MIME 类型类别包括:文本类 (text/plain、text/html、text/css)、应用类 (application/json、application/pdf、application/xml)、图像类 (image/png、image/jpeg、image/webp)、音频类 (audio/mpeg) 和视频类 (video/mp4)。文本类 MIME 类型可通过 charset 参数指定字符编码,写作 text/html; charset=utf-8。
在 Web 开发实务中,MIME 类型配置错误可能引发安全问题。为防止利用浏览器 MIME 嗅探 (浏览器忽略 Content-Type 而从内容推测类型) 的攻击,建议设置 X-Content-Type-Options: nosniff 头。在文件上传功能中,不应信任客户端发送的 MIME 类型,而应在服务器端验证文件的实际内容。
一个常见的误解是将文件扩展名与 MIME 类型等同。扩展名只是文件系统的惯例,而 MIME 类型是在协议层面声明数据类型。.json 文件的 MIME 类型是 application/json,但更改扩展名并不会改变 MIME 类型。Web 服务器配置中需要正确映射扩展名与 MIME 类型。
在字符计数方面,MIME 类型在 API 设计和数据交换中扮演着决定文本数据字符编码的重要角色。同样的日文文本在 charset=utf-8 和 charset=shift_jis 下字节数不同,影响 Content-Length 头的值。要准确把握 API 响应的字符数,需要考虑 MIME 类型中指定的编码。了解催情饮料 (Amazon)提供了更多背景知识。