无需登录 数据私有 本地保存

媒体类型 (MIME) 结构解析器 - 参数深度提取

12
0
0
0

MIME 类型结构解析器

深度解析 MIME 类型字符串,提取主类型、子类型及所有参数,支持 RFC 标准格式。

快速示例:
常见 MIME 类型参考 RFC 标准
主类型 MIME 类型 常见扩展名 典型用途 常见参数
text text/html .html, .htm HTML 文档 charset=utf-8
text text/css .css 层叠样式表 charset=utf-8
text text/plain .txt 纯文本 charset
image image/png .png PNG 图像
image image/jpeg .jpg, .jpeg JPEG 图像
image image/gif .gif GIF 动图
audio audio/mpeg .mp3 MP3 音频
audio audio/ogg .ogg OGG 音频
video video/mp4 .mp4 MP4 视频
application application/json .json JSON 数据 charset=utf-8
application application/pdf .pdf PDF 文档
application application/javascript .js JavaScript 脚本 charset=utf-8
application application/xml .xml XML 文档 charset
application application/zip .zip ZIP 压缩包
application application/x-www-form-urlencoded HTML 表单编码
multipart multipart/form-data 文件上传表单 boundary
常见问题 (FAQ)
什么是 MIME 类型?

MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)类型,现在更准确地称为媒体类型(Media Type),是一种用于标识文档、文件或字节流的内容格式的标准。它由 IANA(互联网号码分配机构)统一管理,广泛应用于 HTTP 协议中的 Content-Type 头、电子邮件附件、操作系统文件关联等场景。例如,当浏览器收到 Content-Type: text/html; charset=utf-8 时,就知道返回的内容是 UTF-8 编码的 HTML 文档。

MIME 类型的标准结构是什么?

MIME 类型的标准结构为:type/subtype; parameter=value,由三部分组成:

  • 主类型(type):表示内容的宏观类别,如 textimageaudiovideoapplicationmultipartfontmessage 等。
  • 子类型(subtype):在主类型下进一步细分,如 htmljsonpngpdf 等。子类型可以使用 vnd.(厂商自定义)、x-(实验性)等前缀。
  • 参数(parameters):以分号分隔的键值对,提供额外的元信息。常见参数包括 charset(字符编码)、boundary(multipart 边界分隔符)、version(版本号)等。
charset 参数的作用是什么?

charset 参数用于指定文本内容的字符编码方式。常见的值包括:

  • utf-8:Unicode 编码,支持全球所有语言字符,是目前最推荐的编码方式。
  • iso-8859-1(Latin-1):西欧语言编码。
  • gb2312 / gbk:简体中文编码。
  • shift_jis:日文编码。

在 HTTP 响应中正确设置 charset 可以避免乱码问题。例如:Content-Type: text/html; charset=utf-8

boundary 参数用于什么场景?

boundary 参数专门用于 multipart/* 类型的 MIME(如 multipart/form-datamultipart/mixed),用于定义分隔多个消息部分的边界字符串。每个部分之间用 --边界字符串 分隔,整个消息以 --边界字符串-- 结束。

例如,HTML 表单上传文件时,请求体的 Content-Type 通常为:multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW,浏览器使用这个边界字符串来分隔不同的表单字段和文件数据。

MIME 类型中的 vnd.x- 前缀代表什么?

在 MIME 类型的子类型中:

  • vnd.(vendor):表示厂商自定义类型,由特定组织或公司向 IANA 注册。例如 application/vnd.ms-excel(Microsoft Excel)、application/vnd.api+json(JSON API 规范)。
  • x-(experimental):表示实验性类型,未在 IANA 正式注册,用于私有协议或测试。例如 application/x-www-form-urlencoded(虽然带 x-,但已被广泛使用)。
  • prs.(personal):个人注册的类型,较为少见。

此外,子类型还可以使用 + 后缀表示结构化类型,如 application/vnd.api+json 表示基于 JSON 的 API 格式。

如何在 HTTP 中正确设置 MIME 类型?

在 HTTP 协议中,MIME 类型通过 Content-Type 响应头设置。最佳实践包括:

  • HTML 页面Content-Type: text/html; charset=utf-8
  • JSON APIContent-Type: application/json; charset=utf-8
  • 文件下载:根据文件类型设置,如 application/pdfapplication/zip,并配合 Content-Disposition 头。
  • 安全考虑:避免使用浏览器会嗅探的模糊类型,明确指定正确的 MIME 类型以防止 MIME 嗅探攻击。可配合 X-Content-Type-Options: nosniff 头使用。
MIME 类型参数值中的引号有什么规则?

根据 RFC 规范,MIME 类型参数值可以使用双引号包裹,尤其是在值包含特殊字符(如空格、分号、逗号)时:

  • 不含特殊字符的值:charset=utf-8(无需引号)
  • 含特殊字符的值:boundary="----WebKit Boundary"(使用引号包裹)
  • 如果值本身包含双引号,需要使用转义:name="value with \"quote\""

本解析器会自动识别并正确处理引号包裹的参数值。

主类型 applicationtext 有什么区别?

text 类型用于人类可读的纯文本内容,浏览器可能会尝试进行字符编码检测和渲染。而 application 类型用于需要特定应用程序处理的二进制或结构化数据,浏览器不会对其进行文本渲染处理。例如:

  • text/html — 浏览器会作为 HTML 渲染
  • text/plain — 浏览器会作为纯文本显示
  • application/json — 不会被渲染,通常由 JavaScript 处理
  • application/pdf — 需要 PDF 阅读器或浏览器插件

值得注意的是,application/javascript 已取代旧的 text/javascript,成为 JavaScript 文件的标准 MIME 类型。