在工作中经常可以接触到content-type,但很少去认真的总结一些常用的,刚好最近写了关于附件展示的组件,来认真总结一下content-type
ContentType的基本概念
ContentType,内容类型,是HTTP的实体头部,用于指示资源属于什么MIME类型,存在于请求头和响应头中;
1 请求头中,告知服务端所发送的数据类型,以便于服务端更好的处理数据; 2 响应头中,告知浏览器服务端所返回的数据类型,以便于开发者或者浏览器去读取返回的内容;
格式:
ContentType:type/subtype;
type 表示可以被分多个子类的独立类别。subtype 表示细分后的每个类型
Content-Type: multipart/form-data; boundary=xxx
Content-Type: application/json; charset=utf-8
其中boundary是内容边界,chaset是字符集,MIME类型其实很多
ContentType在请求响应中的常见格式
请求头
Content-Type:multipart/form-data
需要在表单中进行文件上传时,就需要使用该格式,wangeditor上传文件就是这种格式,传递的参数是二进制格式这边就不列举了,若是图片,会包含文件名、文件类型信息等
Content-Type:application/json; charset=utf-8
一般的调用接口所传递的数据大部分都是json格式
{
"oneCategoryId": 2,
"currentPage": 1,
"pageSize": 10
}
Content-Type:application/x-www-form-urlencode
浏览器的原生form
表单,如果不设置 enctype
属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据,就是以key/value的形式传递数据
keywords=123&undefined=123
响应头
在响应中常见的Content-Type有:
application/json;charset=utf-8
请求数据返回json格式
application/javascript
javascript文件text/css
css文件(注意与js不同的是这里是text,application通常表示可执行或可解析的二进制数据)text/html
html文件text/plain
纯文本audio/xx
音频文件video/xx
视频文件application/octet-stream
二进制流数据(如常见的文件下载),表示所有其他情况的默认值。
设置正确的MIME类型的重要性
1 MDN 所列举的
2 浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL,因此服务端在响应头中设置正确的content-type类型非常重要;如果配置不正确,浏览器可能会无法解析文件内容,下载的文件也会被错误处理;