在 HTTP 协议中,Content-Type 头部字段用于告知接收方,发送的实体内容(请求或响应体)是何种类型。它通常包含媒体类型(即 MIME 类型),有时也包括子类型和附加参数。Content-Type 头部是告诉接收方如何解析请求或响应体数据的关键部分。

1. Content-Type 的结构

Content-Type 的基本格式为:

Content-Type: type/subtype; parameter=value

  • type:媒体类型,指定内容的基本类型(例如,textapplicationimage 等)。
  • subtype:媒体子类型,指定内容的具体格式或编码(例如,plainhtmljsonxml 等)。
  • parameter:可选的附加参数,用于进一步说明媒体类型的细节(如字符编码、压缩方式等)。

2. 常见的 Content-Type 类型及其用途

1. 文本类型(text/*

  • Content-Type: text/plain
    纯文本格式,无格式的文本数据,通常用于无任何样式和标记的文本内容(如普通的 .txt 文件)。Content-Type: text/plain
  • Content-Type: text/html
    HTML 格式,指示内容是 HTML 文档,浏览器会按 HTML 格式渲染内容。Content-Type: text/html
  • Content-Type: text/css
    CSS 文件,用于样式表文件,浏览器根据 CSS 规则渲染页面。Content-Type: text/css
  • Content-Type: text/javascript
    JavaScript 文件,指示内容是 JavaScript 代码,浏览器会执行该代码。Content-Type: text/javascript
  • Content-Type: text/xml
    XML 文件,指示内容是 XML 格式的数据,通常用于表示结构化的数据。Content-Type: text/xml
  • Content-Type: text/csv
    CSV 文件,指示内容是逗号分隔值(CSV)格式的文本数据。Content-Type: text/csv

2. 应用类型(application/*

  • Content-Type: application/json
    JSON 格式,指示内容是 JSON 格式的数据,常用于客户端和服务器之间交换数据。Content-Type: application/json
  • Content-Type: application/xml
    XML 格式,指示内容是 XML 格式的数据,通常用于数据交换或 API 响应。Content-Type: application/xml
  • Content-Type: application/x-www-form-urlencoded
    表单数据的标准编码方式,通常用于提交表单时。字段与字段之间由 & 分隔,每个字段的值由 = 连接。Content-Type: application/x-www-form-urlencoded
  • Content-Type: application/json
    JSON 数据,常用于 Web API 的请求和响应体,数据格式是 JSON。Content-Type: application/json
  • Content-Type: application/javascript
    JavaScript 文件,指示内容是 JavaScript 代码,浏览器会执行该代码。Content-Type: application/javascript
  • Content-Type: application/octet-stream
    通用的二进制数据流,通常用于发送文件内容。如果服务器不知道文件类型,可以使用此类型。Content-Type: application/octet-stream

3. 图片类型(image/*

  • Content-Type: image/jpeg
    JPEG 图像格式。Content-Type: image/jpeg
  • Content-Type: image/png
    PNG 图像格式。Content-Type: image/png
  • Content-Type: image/gif
    GIF 图像格式。Content-Type: image/gif
  • Content-Type: image/svg+xml
    SVG 图像格式,通常用于矢量图形。Content-Type: image/svg+xml

4. 多部分表单数据(multipart/*

  • Content-Type: multipart/form-data
    用于表单上传文件时,内容按多部分编码方式发送。每个部分都是单独的内容类型。Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW 其中,boundary 是分隔不同表单字段和文件数据的标识符。
  • Content-Type: multipart/alternative
    适用于邮件,表示内容有多个不同的格式(如纯文本和 HTML 格式的邮件正文),接收方可以选择其中一种。Content-Type: multipart/alternative; boundary="----boundarystring"

5. 音频和视频类型(audio/* 和 video/*

  • Content-Type: audio/mpeg
    MPEG 音频格式,常见的音频文件类型。Content-Type: audio/mpeg
  • Content-Type: video/mp4
    MP4 视频格式。Content-Type: video/mp4

3. 附加参数(Parameters)

有些 Content-Type 还可以包括附加的参数,通常用于指定编码方式、字符集等。常见的附加参数有:

  • charset:用于指定字符编码,常见于文本类型(如 text/htmltext/plain 等)。Content-Type: text/html; charset=UTF-8
  • boundary:用于 multipart 类型,指定分隔符,区分不同的表单数据。Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

4. 总结

Content-Type 是 HTTP 请求和响应中的重要头部字段,指定了请求或响应体的格式,确保服务器和客户端能够正确解析和处理数据。根据不同的场景,Content-Type 的值会有所不同,常见的类型包括 text/*application/*image/*audio/*video/* 等。

常见用法总结

  • text/html:用于 HTML 页面。
  • application/json:用于 JSON 数据交换。
  • application/xml:用于 XML 数据。
  • image/jpegimage/png:用于图片文件。
  • multipart/form-data:用于表单文件上传。

通过适当设置 Content-Type,确保客户端和服务器可以正确地处理传输的数据。