工具
指南

MIME / Content-Type 速查

参考手册

常见 MIME 类型与文件扩展名的对照表,支持搜索。

100% 客户端 无后端
Content-Type 扩展名 分类 描述
本页内容

什么是 MIME 类型参考表?#

MIME 类型(也叫媒体类型、Content-Type)是那个告诉接收方”这串字节到底是什么内容”的短标签:text/html 是网页,application/json 是 JSON 数据,image/png 是 PNG 图片。格式永远是 类型/子类型 —— 一个大类、一个斜杠、再一个具体名。HTTP 靠它决定是该渲染、下载、解析还是拒绝这段响应;浏览器靠它挑对应的处理器(<img> 期望图片类型,<script> 期望 JavaScript 类型);邮件靠它附加各种文件。

格式看着简单,实际场面相当乱。顶层大类有七个(applicationaudiofontimagemodeltextvideo),不少文件对应多个扩展名(.jpg.jpeg.jpe 都是 image/jpeg),有的类型既有老写法又有现代写法(application/javascripttext/javascript),选错了还真会出 bug——样式表被当成 text/plain 就不生效,字体被当成 application/octet-stream 就加载不出来。本页就是一份可搜索的查表,保证你每次都选对标签。

怎么使用#

  1. 随便怎么搜。 搜索框过滤整张表,三种问法都行:
    • 文件扩展名带前导点——.jpg.woff2.mp4——精确命中映射到该扩展名的类型。
    • 类型或子类型本身——image、json、svg——按名称收窄。
    • 单词——archive、font、spreadsheet——在描述里全文搜。
  2. 看行。 列依次是类型(Type)(完整的 类型/子类型)、扩展名(Extensions)(常见的文件后缀)、类别(Category)(七个顶层大类之一)、描述(Description)(这个类型是干嘛的一句话)。
  3. 选对的。 一个扩展名通常只有一个规范类型;偶尔有两个(JavaScript 是经典案例),描述里会说明哪个是现行写法。

主要特性#

  • 七个大类一张表。 application、audio、font、image、model、text、video 全放在一起,从字体问题跳到视频问题不用换页。
  • 以扩展名为入口。 真实最高频的任务就是”我有个 .xlsx 文件,Content-Type 该填什么”——输 .xlsx 直接命中 application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
  • 新写法、老写法都收。 某类型在历史上有过老写法且现在仍能见到时,两种都列出并附说明,HTTP 头里两个方向你都能认。
  • 含厂商类型。 Microsoft Office、ZIP、gzip、7z、RAR、WebAssembly、Web App Manifest、GraphQL——那些长长的 application/vnd.*application/*+jsonapplication/*+xml 形式都在。
  • 本地、即时。 数据集内嵌进页面,每次搜索都是客户端过滤,不发请求。

实例演示#

JavaScript 是最容易让人犯晕的一条,因为这个类型的名字改过,服务器两种都在发。搜 javascript,出来两行:

  • text/javascript —— jsmjs —— “标准、现代的 MIME 类型。”
  • application/javascript —— js —— “传统 JavaScript MIME 类型(仍广泛出现)。”

一句话总结:text/javascript 是现行 HTML 和 Fetch 规范要求你用的、现代服务器实际发送的;application/javascript 是较早的 RFC 4329 名字,你仍会在老的 Content-Type 头和旧文档里见到。两者含义相同、浏览器同等对待——但配置新服务器时,优先选 text/javascript

还有几条值得记死、一搜即得的映射:

  • .jsonapplication/json
  • .svgimage/svg+xml(它确实是图片,但 +xml 后缀标明它底层是 XML)
  • .woff2font/woff2(注意它用专属的 font/ 顶层大类,不是 application/
  • .wasmapplication/wasm(WebAssembly 二进制,必须原样发送、不带 charset,否则编译不过)
  • .pdfapplication/pdf

类型无法识别时,服务器会回退到 application/octet-stream —— 那个”这是一段二进制数据,别做任何假设”的通用兜底类型。浏览器通常会因此触发下载,而不是尝试显示。

常见问题#

text/javascriptapplication/javascript,到底用哪个?#

新代码用 text/javascript。它是现行 WHATWG HTML 和 Fetch 规范的要求,也是浏览器判断要不要执行一个 <script> 时实际比对的值。application/javascript 到处都还能用(它是较早的标准),但属于传统写法。配置新服务器、mime 数据库或构建工具时,默认就用 text/javascript

为什么 SVG 的类型里有 +xml#

+xml 是一种”结构化语法后缀”:告诉你这类型的底层序列化是 XML。所以 image/svg+xml 的意思是”一张图片,具体是用 XML 描述的”。同样的约定也出现在 application/ld+json(链接数据,序列化成 JSON)和 application/graphql+json 上。懂这个后缀的工具可以退回到通用 XML 或 JSON 解析器去处理。

application/octet-stream 是干嘛用的?#

它是”任意二进制数据、类型未知”的兜底。服务器识别不出文件时返回它,客户端的安全行为是下载,而不是尝试渲染或执行。如果你原指望在浏览器里打开的文件结果开始下载了,多半就是 Content-Type 设错了或没设(塌缩成了 octet-stream)。

我具体怎么给我的文件设 Content-Type?#

这取决于文件从哪儿发出来——静态文件服务器靠扩展名查 mime 数据库;Web 框架在代码里设(常见是 response.setContentType(...) 或直接给 header 赋值);CDN 在上传或对象元数据里配。不同技术栈的调用方式不一样,唯一必须对的,是最终上线的就是那串字符串——而这正是本查表给你的东西。