HTTP中的ContentType

1,001 阅读2分钟
在工作中经常可以接触到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上传文件就是这种格式,传递的参数是二进制格式这边就不列举了,若是图片,会包含文件名、文件类型信息等

image.png

Content-Type:application/json; charset=utf-8

一般的调用接口所传递的数据大部分都是json格式

{
  "oneCategoryId": 2,
  "currentPage": 1,
  "pageSize": 10
}

image.png

Content-Type:application/x-www-form-urlencode

浏览器的原生form表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数据,就是以key/value的形式传递数据

keywords=123&undefined=123

百度 image.png

响应头

在响应中常见的Content-Type有:

  1. application/json;charset=utf-8 请求数据返回json格式

image.png

  1. application/javascript javascript文件
  2. text/css css文件(注意与js不同的是这里是text,application通常表示可执行或可解析的二进制数据)
  3. text/html html文件
  4. text/plain 纯文本
  5. audio/xx 音频文件
  6. video/xx 视频文件
  7. application/octet-stream 二进制流数据(如常见的文件下载),表示所有其他情况的默认值。

image.png

设置正确的MIME类型的重要性

1 MDN 所列举的

2 浏览器通常使用MIME类型(而不是文件扩展名)来确定如何处理URL,因此服务端在响应头中设置正确的content-type类型非常重要;如果配置不正确,浏览器可能会无法解析文件内容,下载的文件也会被错误处理;

参考链接