HTTP消息头字段Content-type常用值

本文介绍了HTTP消息头字段Content-Type的常见值及其用途,包括application/x-www-form-urlencoded、multipart/form-data、application/json、text/xml等类型,并举例说明了它们在实际应用中的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HTTP消息头字段Content-type常用值

Content-type,内容类型,媒体类型,也叫MIME类型,主要用来指明报文主体部分内容属于哪种类型。

content-type常用语http的post方法,因为get方法不包含消息体。

application/x-www-form-urlencode

最常见的Post提交数据的类型,浏览器原生form表单,默认以application/x-www-form-urlencode类型提交。

如:

POST http://www.xxxx.com HTTP/1.1

Content-Type: application/x-www-form-urlencoded;charset=utf-8

title=test&sub%5B%5D=1&sub%5B%5D=2&sub%5B%5D=3

首先,Content-Type 被指定为 application/x-www-form-urlencoded;其次,提交的数据按照 key1=val1&key2=val2 的方式进行编码,key 和 val 都进行了 URL 转码。大部分服务端语言都对这种方式有很好的支持。例如 PHP 中,$_POST['title'] 可以获取到 title 的值,$_POST['sub'] 可以得到 sub 数组。

multipart/form-data

我们使用表单上传文件时,必须让 form 的 enctyped 等于这个值。直接来看一个请求示例:

POST http://www.example.com HTTP/1.1
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryrGKCBY7qhFd3TrwA


------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="text"


title
------WebKitFormBoundaryrGKCBY7qhFd3TrwA
Content-Disposition: form-data; name="file"; filename="chrome.png"
Content-Type: image/png


PNG ... content of chrome.png ...
------WebKitFormBoundaryrGKCBY7qhFd3TrwA--

这个例子稍微复杂点。首先生成了一个 boundary 用于分割不同的字段,为了避免与正文内容重复,boundary 很长很复杂。然后 Content-Type 里指明了数据是以 mutipart/form-data 来编码,本次请求的 boundary 是什么内容。消息主体里按照字段个数又分为多个结构类似的部分,每部分都是以 --boundary 开始,紧接着内容描述信息,然后是回车,最后是字段具体内容(文本或二进制)。如果传输的是文件,还要包含文件名和文件类型信息。消息主体最后以 --boundary-- 标示结束。

application/json

JSON 格式支持比键值对复杂得多的结构化数据,今天做对接时,服务器一直接收不到数据,就是请求方没将消息头的content-type设置为application/json,浪费不少时间,所以记录一下这个问题。

POST http://www.example.com HTTP/1.1
Content-Type: application/json;charset=utf-8


{"title":"test","sub":[1,2,3]}

这种方案,可以方便的提交复杂的结构化数据,特别适合 RESTful 的接口。在请求头中 Content-Type 为 application/json 时,从 php://input 里获得原始输入流。

$content = file_get_contents('php://input');

text/xml

典型的 XML-RPC 请求是这样的:

POST http://www.example.com HTTP/1.1
Content-Type: text/xml


<!--?xml version="1.0"?-->
<methodcall>
    <methodname>examples.getStateName</methodname>
    <params>
        <param>
            <value><i4>41</i4></value>
         
    </params>
</methodcall>

XML-RPC 协议简单、功能够用,各种语言的实现都有。它的使用也很广泛,不过,觉得 XML 结构还是过于臃肿,一般场景用 JSON 会更灵活方便。

<think>我们正在讨论HTTP协议中的Content-Type字段。根据引用内容,Content-Type用于指示资源的媒体类型(MIME类型),帮助客户端(如浏览器)正确处理接收到的内容。以下是常见Content-Type列表及其应用场景: ### 一、文本类型(text/*) 1. **text/plain** - 纯文本格式,不包含任何格式化 - 示例:`Content-Type: text/plain; charset=utf-8` 2. **text/html** - HTML文档标准格式 - 网页基础类型:`Content-Type: text/html` 3. **text/css** - CSS样式表文件 - 示例:`Content-Type: text/css` 4. **text/javascript** - JavaScript代码(历史上也用`application/javascript`) - 现代标准:`Content-Type: text/javascript; charset=UTF-8` ### 二、图像类型(image/*) 1. **image/jpeg** - JPEG格式图片 - 示例:`Content-Type: image/jpeg` 2. **image/png** - PNG格式透明图片 - 示例:`Content-Type: image/png` 3. **image/gif** - GIF动图 - 示例:`Content-Type: image/gif` 4. **image/svg+xml** - SVG矢量图形 - 示例:`Content-Type: image/svg+xml` ### 三、应用数据类型(application/*) 1. **application/json** - JSON数据交换格式(RFC标准) - API常用:`Content-Type: application/json; charset=utf-8` 2. **application/xml** - XML数据格式 - 示例:`Content-Type: application/xml` 3. **application/pdf** - PDF文档 - 示例:`Content-Type: application/pdf` 4. **application/octet-stream** - 二进制流文件(未知文件类型时默认) - 下载文件常用:`Content-Type: application/octet-stream` ### 四、多媒体类型 1. **audio/mpeg** - MP3音频文件 - 示例:`Content-Type: audio/mpeg` 2. **video/mp4** - MP4视频文件 - 示例:`Content-Type: video/mp4` ### 五、表单相关类型 1. **application/x-www-form-urlencoded** - 默认表单提交类型(数据编码为键对) - 示例:`Content-Type: application/x-www-form-urlencoded` 2. **multipart/form-data** - 支持文件上传的表单类型 - 示例:`Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW` ### 六、字符集参数 所有文本类类型均可指定字符集: ```http Content-Type: text/html; charset=UTF-8 Content-Type: application/json; charset=iso-8859-1 ``` ### 完整对照表参考 [HTTP Content-Type 对照表](https://blog.youkuaiyun.com/qq_44848480/article/details/123688292) [^3] > 关键原则:服务端必须正确设置Content-Type,否则可能导致: > - 浏览器无法解析样式/脚本 > - 图片/视频无法正常播放 > - JSON数据被当作文本处理 §§相关问题§§ 1. 如何为动态生成的PDF文件设置Content-Type? 2. Content-Type与文件扩展名的关系是什么? 3. 在HTTP响应中遗漏Content-Type会导致什么问题? 4. 如何检测客户端支持的Content-Type类型? [^1]: Content-Type用于定义网络文件的类型和网页的编码[^1] [^2]: 服务端返回的内容的类型需要正确指定[^2] [^3]: HTTP content-type 对照表提供了详细类型对应关系[^3]</think>### HTTP Content-Type字段常见取详解 Content-TypeHTTP 协议中最重要的头部字段之一,用于标识资源的媒体类型(MIME 类型),帮助客户端正确处理响应内容。以下是主要分类和常见取: #### 一、文本类型 1. **text/plain** - 纯文本格式 - 示例:`Content-Type: text/plain; charset=utf-8` - 适用场景:API 返回简单文本消息 2. **text/html** - HTML 文档 - 示例:`Content-Type: text/html` - 适用场景:网页响应(浏览器自动解析 HTML) 3. **text/css** - CSS 样式表 - 示例:`Content-Type: text/css` - 适用场景:样式文件传输 4. **text/javascript** - JavaScript 代码 - 替代类型:`application/javascript` - 示例:`Content-Type: text/javascript; charset=UTF-8` #### 二、图像类型 1. **image/jpeg** - JPEG 图像 - 示例:`Content-Type: image/jpeg` 2. **image/png** - PNG 图像 - 示例:`Content-Type: image/png` 3. **image/gif** - GIF 动图 - 示例:`Content-Type: image/gif` 4. **image/svg+xml** - SVG 矢量图 - 示例:`Content-Type: image/svg+xml` - 适用场景:验证码、可缩放图形 #### 三、应用数据类型 1. **application/json** - JSON 数据格式(RFC 标准) - 示例:`Content-Type: application/json; charset=utf-8` - 适用场景:API 数据传输 2. **application/xml** - XML 数据 - 示例:`Content-Type: application/xml` 3. **application/pdf** - PDF 文档 - 示例:`Content-Type: application/pdf` 4. **application/octet-stream** - 二进制流(默认类型) - 示例:`Content-Type: application/octet-stream` - 适用场景:文件下载 #### 四、多媒体类型 1. **audio/mpeg** - MP3 音频 - 示例:`Content-Type: audio/mpeg` 2. **video/mp4** - MP4 视频 - 示例:`Content-Type: video/mp4` #### 五、表单相关类型 1. **application/x-www-form-urlencoded** - 默认表单编码 - 示例:`Content-Type: application/x-www-form-urlencoded` - 数据格式:`key1=value1&key2=value2` 2. **multipart/form-data** - 支持文件上传的表单 - 示例:`Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW` - 适用场景:文件上传表单 #### 六、特殊类型 1. **application/zip** - ZIP 压缩文件 - 示例:`Content-Type: application/zip` 2. **text/event-stream** - 服务器推送事件 (SSE) - 示例:`Content-Type: text/event-stream` #### 字符集参数 所有文本类型均可指定字符集: ```http Content-Type: text/html; charset=UTF-8 Content-Type: application/json; charset=iso-8859-1 ``` > **关键注意事项**: > 1. 若未指定 Content-Type,浏览器会尝试猜测类型(可能引发安全问题) > 2. 错误设置类型会导致内容解析失败(如 JSON 误设为 text/plain) > 3. 文件下载需明确设置 `Content-Disposition` 头 完整 MIME 类型参考:[HTTP Content-Type 对照表](https://blog.youkuaiyun.com/qq_44848480/article/details/123688292) [^3]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值