MDN Content-Type
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Type

  1. application/json
  2. multipart/form-data
  3. application/x-www-form-urlencoded
  4. text/xml

HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范。
规范把 HTTP 请求分为三个部分:状态行请求行、请求头、消息主体;

协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。
开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
数据发送出去,还要服务端解析成功才有意义
服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析

application/json

告诉服务端消息主体是序列化后的 JSON 字符串

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

applicatoin/json的优势:

  1. 可以提交复杂的结构化数据

multipart/form-data

上传多个,适用于

  • 文件的上传
  • 图片的上传

使用表单上传文件时,必须让

表单的 enctype 等于 multipart/form-data

  1. Content-Type: 'multipart/form-data'

application/x-www-form-urlencoded

https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4

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

Content-Type 默认值 application/x-www-form-urlencoded;charset=utf-8

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

Content-Type 被指定为 application/x-www-form-urlencoded;
提交的数据按照 key1=val1&key2=val2 的方式进行编码,
key 和 val 都进行了 URL 转码

原生 form标签 enctype支持的类型

  1. 默认值,application/x-www-form-urlencoded
  2. multipart/form-data
  3. text/plain

text/xml