前者是 a=b&b=c&c=%asdf&xxx 是一种键值对的形式,中间以&作为分隔符,其实就像浏览器地址框中的url一样会被转义。也就是会被js中encodeURIComponent方法

 

 

 

 

后者可以理解为是一种增强的变种,用于传输文件,因为内部不会被转义,分隔符也不再是&

在请求头的content-type中,会指明分隔符

 

 

请求头:

Cotent-Type:multipart/form-data; boundary=—xxxxxxxx

 

在请求头的content-type属性中,指明了boundary字段,代表分隔符,

 

 

之后的请求体大致如下:

 

application/x-www-form-urlencoded  与  multipart/form-data_请求头

 

 

 

请求体中的数据不会被转码

 

对于二进制文件,会直接上传他们的内容,不转码原来是什么就是什么,所以相比转码后传数据更小(之前的%转码方式使数据占用字节变大了)