HTTP 内容类型对照表

常见 HTTP Content-Type(媒体类型)含义与示例,覆盖 JSON、HTML、表单、图片、音视频与文件下载,并说明 charset 与 multipart boundary 用法。

Content-Type含义示例
application/jsonJSON 结构化数据Content-Type: application/json; charset=utf-8
application/xmlXML 数据application/xml; charset=utf-8
text/htmlHTML 文档text/html; charset=utf-8
text/plain纯文本text/plain; charset=utf-8
application/x-www-form-urlencodedHTML 表单默认编码application/x-www-form-urlencoded
multipart/form-data文件上传表单multipart/form-data; boundary=----WebKitFormBoundaryABC
application/octet-stream未知二进制流(触发下载)application/octet-stream
image/pngPNG 图片image/png
image/jpegJPEG 图片image/jpeg
image/svg+xmlSVG 矢量图image/svg+xml
audio/mpegMP3 音频audio/mpeg
video/mp4MP4 视频video/mp4
application/pdfPDF 文档application/pdf
application/zipZIP 压缩包application/zip
font/woff2WOFF2 字体font/woff2
application/javascriptJavaScript 脚本application/javascript; charset=utf-8
application/ld+json结构化数据(JSON-LD)application/ld+json
application/gzipGzip 压缩数据application/gzip

常见问题

Content-Type 的 charset 不写会怎样?

服务端若省略 charset,浏览器会按自身默认编码猜测(常是 ISO-8859-1 或随 Locale),中文等 UTF-8 文本极易出现乱码。文本类类型强烈建议显式写 charset=utf-8。二进制类型(image/*、application/octet-stream)不需要 charset。

multipart/form-data 的 boundary 是什么?

boundary 是分隔表单各字段的分隔符,配合两个连字符前缀(如 --boundary)切分 parts。它由客户端随机生成,无需手写;服务端按 Boundary 解析各字段与文件。

application/json 和 text/json 用哪个?

标准与事实实践是 application/json(IANA 注册、被所有库识别)。text/json 非标准、部分旧系统或防火墙可能误判,不建议使用。

为什么下载接口常返回 application/octet-stream?

octet-stream 表示「未知二进制」,浏览器见到它通常不会尝试预览,而是直接触发下载(配合 Content-Disposition: attachment)。适合导出文件、安装包等场景。