在响应中,Content-Type 标头告诉客户端实际返回的内容的内容类型。浏览器会在某些情况下进行 MIME 查找,并不一定遵循此标题的值; 为了防止这种行为,可以将标题 X-Content-Type-Options 设置为 nosniff。
一、Content-Type的格式
Content-Type:type/subtype ;parameter
- type:主类型,任意的字符串,如text,如果是*号代表所有;
- subtype:子类型,任意的字符串,如html,如果是*号代表所有,用“/”与主类型隔开;
- parameter:可选参数,如charset,boundary等。
示例
Content-Type: text/html;
Content-Type: application/json;charset:utf-8;
Content-Type: application/x-www-form-urlencoded;charset:utf-8;
1.media-type(type和subtype合并)
text/html,是指请求的media-type,他分为两个部分type和subtype,以“/”进行分割;也就是上面的type和subtype组合起来叫media-type
常见的type有,如text,如果是*号代表所有;
- Text:用于标准化地表示的文本信息,文本消息可以是多种字符集和或者多种格式的;
- Multipart:用于连接消息体的多个部分构成一个消息,这些部分可以是不同类型的数据;流的形式,常用于上传大型文件
- Application:用于传输应用程序数据或者二进制数据;日常前后端传输数据常用。
- Message:用于包装一个E-mail消息;
- Image:用于传输静态图片数据;
- Audio:用于传输音频或者音声数据;
- Video:用于传输动态影像数据,可以是与音频编辑在一起的视频数据格式。
常见的subtype有,如果是*号代表所有,用“/”与主类型type隔开;
- text/html
- application/x-www-form-urlencoded
- application/json
- multipart/form-data
- application/xml
- text/plain
- text/css
- text/javascript
2.charset
是指定字符编码的标准
常见的有
- "ISO-8859-1"
- "UTF-8"
- "GB2312“
- ”ASCII“等;
3.boundary
多用于上传文件时使用,用于分割数据;后端也不用自己加,
当content-type为multipart/form-data类型时,需要用boundary指定分隔符。所以boundary后面跟的随机数,就是分隔符,后端就是通过解析到boundary的值作为分隔符来分隔参数的。但是无论前后端都不要手动设置分隔符,浏览器和postman会主动加的。
二、常见的Content-Type
1.application/x-www-form-urlencoded
content-type缺省时的默认格式,键值对并用&
连接,键值对KV都进行了URL转码。
- 如果是get请求时,会将参数拼接url后面,用
?
分割。且对长度有限制。安全性打折扣。url?a=value1&b=value2
- 如果是post请求时,参数会被封装到请求body中
2.application/json
数据格式以json字符串的形式传递,使用越来越多的Content-Type,也是平时见得最多的。
{ "q": "", "p": false, "bs": "", "csor": "0", "err_no": 0, "errmsg": "", "g": [], "queryid": "0xa7fa6" }
axios大部分版本默认的请求头 application/json;charset=utf-8
3.multipart/form-data
multipart/form-data就诞生了,专门用于有效的传输文件。
multipart/form-data 既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
使用multipart/form-data时,请求体参数可来自于new FormData()生成的实例,或enctype为multipart/form-data的表单数据。
标签:form,text,Content,application,type,数据格式,Type From: https://www.cnblogs.com/wanglei1900/p/17177303.html