MIME 类型查询

扩展名和 Content-Type 互查,顺便把服务器映射片段拼好。

本地计算

选择工具

正查、反查与生成配置
按扩展名查 输入 .html 这样的扩展名,查它该用哪个 MIME

一次可以填多个,用空格或逗号隔开

查询结果

可直接选中复制
等待输入…
当前工具按扩展名查
结果状态等待输入

常见问题

为什么同一个扩展名,不同服务器给出的 MIME 不一样?

因为 MIME 有两套来源:一套是 IANA 的正式注册(RFC 系列),另一套是各服务器软件自带的默认映射表,后者常常沿用十几年前的老写法。最典型的是 .js:正式标准(RFC 9239)是 text/javascript,而不少旧配置里还写着 application/javascript。本表给出当前的标准写法,并在有分歧的条目下把旧写法一并注出来,而不是假装只有一个答案。

.mjs、.wasm、.webmanifest 这类新格式有什么坑?

.mjs 必须是 text/javascript。浏览器对 module 脚本强制校验 MIME,一旦服务器把它发成 application/octet-stream 或空类型,整段脚本会被直接拒载,控制台只留一行 MIME 错误。.wasm 必须是 application/wasm,否则浏览器不会实例化这个模块。.webmanifest 推荐 application/manifest+json,否则部分浏览器会把 PWA 清单当普通文件下载。这三条的共同点是:配错了页面不会报错,只是某个功能静默失效。

生成的服务器片段可以直接上线吗?

可以当起点,但要按自己服务器的版本核对。不同版本的默认映射表不一样,重复定义可能覆盖掉你并不想动的类型;nginx 的 types 块会替换默认表,建议只写自己确实需要的那几条,或先逐条注释确认。另外这份片段只负责 MIME,不含缓存策略与安全响应头,那部分要单独配置。

会联网或上传我查的内容吗?

不会。整张类型表都写在本地脚本里,查询、反查与配置生成全部在当前浏览器内完成,页面不发任何网络请求,输入的内容也不写入本地存储,刷新即回到默认示例。

最安静的故障,是 MIME 配错了

MIME 配错不会让服务器报 500,也不会少返回一个字节:文件在、路径对、状态码 200,可功能就是不工作。所以它比崩溃更难查 —— 你得先想到去翻响应头。这一页把扩展名、Content-Type 和服务器映射三件事摆在一起,让配置和排查都有对照。

正查与反查都有

按扩展名查它该用哪个 MIME,也能拿一个不认识的 Content-Type 反查它对应哪些扩展名。

覆盖 80 多种类型

网页、脚本、样式、数据、图片、字体、音视频、压缩包与文档,常见格式基本都在表里。

标出有分歧的写法

.js、.ico、.xml、.yaml 这些存在新旧两套写法的条目,会把旧写法一起注出来,而不是只给一个孤立答案。

点明易踩的坑

.mjs 必须 text/javascript、.wasm 必须 application/wasm、.ts 会与 TypeScript 撞车,这些都在对应条目下写明。

能生成服务器片段

一次粘贴一批扩展名,输出 nginx types 块、Apache AddType、JSON 或 JavaScript 映射,直接拿去用。

按 MIME 自动合并

同类型的多个扩展名合并成一行(htm 与 html 都是 text/html),不会生成重复定义。

查不到就说查不到

没有收录的扩展名不会拿 application/octet-stream 冒充答案,而是明确说未收录并给出相近候选。

本地运行

类型表写在脚本里,不联网、不上传,输入内容不写本地存储,刷新即回到默认示例。

三个真实会被绊倒的地方

  1. 把 charset 当成 MIME 的一部分。text/html 是类型,charset=utf-8 是参数,写在分号后面。真正决定网页编码的是响应头里的这个参数或 HTML 里的 meta,两处不一致时以响应头优先,写错就会出现乱码。
  2. 用 default_type 掩盖配置缺失。把默认类型设成 text/html 会让没配到的静态文件全被当网页解析,页面看似正常,脚本和字体却悄悄失效。默认值留 application/octet-stream 更安全。
  3. 以为「能显示」就等于配对了。现代浏览器对图片、音视频会做内容嗅探,类型写错照样播。但脚本、样式表与 module 是严格校验的,同一份配置里有的生效有的不生效,最容易把人带偏。