MIME 类型
MIME 类型(全称 Multipurpose Internet Mail Extensions,也叫媒体类型、内容类型)是一个用来标识数据格式的标准字符串,格式为 类型/子类型,例如 text/html、application/json、image/png。它最早用于电子邮件附件,如今在 Web 中主要通过 HTTP 的 Content-Type 响应头传递,告诉浏览器或客户端「这段字节应该怎么解读」。
它的作用是让接收方不靠猜就能正确处理数据:浏览器看到 text/html 就渲染网页,看到 application/pdf 就调 PDF 阅读器,看到 application/octet-stream 则一般当作未知二进制触发下载。类型后面还可带参数,最常见的是字符集,如 text/html; charset=utf-8。
使用中的几个要点:
- 决定浏览器行为的是
Content-Type响应头,而不是文件后缀名;后缀只是服务器用来推断类型的常见依据。 - 接口返回 JSON 却被当成纯文本或触发下载,多半是没设
Content-Type: application/json。 - 浏览器可能会「嗅探」内容猜测真实类型,用
X-Content-Type-Options: nosniff可关闭,避免安全隐患。
常见问题
Content-Type 和 MIME 类型是同一个东西吗?
严格说不完全是:MIME 类型是 `类型/子类型` 这个值本身,而 Content-Type 是 HTTP 里承载这个值的响应头字段。日常口语中两者常被当作一回事。
为什么我的接口返回 JSON,浏览器却当成文本显示或直接下载?
因为响应没有正确设置 `Content-Type: application/json`。客户端只按这个头来解读数据,头不对就会回退成纯文本或未知二进制处理。
MIME 类型是由文件后缀名决定的吗?
不是。真正生效的是服务器发出的 Content-Type 头,浏览器信这个头而非后缀。只不过服务器(如 Nginx)通常按后缀映射来自动填这个头,所以后缀配错也会连带出错。