Content-type作用是什么
Content-type在请求头、响应头中都存在,在请求头中的它的作用是告知服务器请求参数的数据类型(MIME类型),服务器可以用合适的方法去处理它。在响应头中的作用是告知浏览器此次响应内容的数据类型,客户端可以用合适的方法去处理它。
Content-type的几种常见类型
multipart/form-data
这种类型一般用在上传二进制文件,比如上传图片或者上传文件等,也可用于包含文件的form表单提交。
用于POST请求。
它的格式是:
Content-Type: multipart/form-data; boundary=aBoundaryString
boundary是浏览器自动生成的,用于分隔表单中不同部分的内容。不同内容会有不同的content-type表示该字段的类型,可以上传键值对、文件,这些都用boundary进行分割。
注:当请求参数为FormData(内置对象)时,浏览器会自动为该请求设置content-type:multipart/form-data,并且自动生成一个boundary,用于分割各部分内容。如果你自己设置了content-type:multipart/form-data,浏览器就不会自动生成boundary,这样请求中携带的参数就消失了。因此,无需自己设置content-type:multipart/form-data。
application/json
application/json一般都用于响应头,但是现在也普遍用于请求头,用于告诉服务器消息主体是序列化后的JSON字符串。
application/json支持更加复杂的数据格式,格式化后的数据会被放在请求实体内,不会进行任何的编码处理。
application/x-www-form-urlencoded
是表单默认的提交数据的格式(表单中不存在二进制文件时使用),数据被格式化为key:value的形式,并进行编码,放在url上或者body中。
数据被编码成以 '&' 分隔的键/值对, 同时以 '=' 分隔键和值. 非字母或数字的字符会被编码。
当用于GET请求时,参数会以currentPage=1&pageSize=50&towerId=72285408&module=room的形式,被拼接在url后方。
当用于POST请求时,参数会被封装在请求的主体body中。
当表单中存在二进制文件的时候,使用这种编码方式很低效,应该使用multipart/form-data