content
content-type content-type是http请求的响应头和请求头的字段。当作为响应头时,告诉客户端实际返回的内容的内容类型。作为请求头时,客户端告诉服务器实际发送的数据类型。前端开发过程中,需要跟后端工程师对接接口的数据格式,不同的数据类型对于服务器来说有不同的处理方式,因此我们需要关注不同的conten-type类型. 1. application/x-www-form-urlencoded 浏览器原生form表单默认的提交方式(在不设置enctype的情况下)。提交的数据按照 k1=v1&k2=v2的方式进行编码,key和val都进行了URL转码.此时请求头的格式如下: content-type: application/x-www-form-urlencoded;charset=utf-8form-data: k1=v1&k2=v2 非字母或数字的字符会被进行编码(编码方式/zh-CN/docs/Glossary/percent-encoding),这也是为什么这种方式不支持二进制数据的原因。 2. multipart/form-data 与application/x-www-form-urlencoded 的区别是它支持文件的传输,并且它的传输数据放在request-payload里,并且以bounday进行分隔。常见的 POST 数据提交的方式。我们使用表单上传文件时,必须让 form 的 enctype 等于这个值。 <form action="/" method="post" enctype="multipart/form-data"> <input type="text" name="name" value="some text"> <input type="file" name="fileName"> <button type="submit">Submit</button></form> 请求头 POST /foo HTTP/1.1Content-Length: 68137Content-Type: multipart/form-data;boundary=---------------------------974767299852498929531610575---------------------------974767299852498929531610575Content-Disposition: form-data; name="name" value="some text"---------------------------974767299852498929531610575Content-Disposition: form-data; name="fileName"; filename="foo.txt"Content-Type: text/plain(content of the uploaded file foo.txt)---------------------------974767299852498929531610575-- 4.application/json 消息主体是序列化后的 JSON 字符串,这个类型越来越多地被大家所使用 POST HTTP/1.1 Content-Type: application/json;charset=utf-8{"title":"test","sub":["a","b","c"]} 它用来告诉服务端消息主体是序列化后的 JSON 字符串,其中一个好处就是JSON 格式支持比键值对复杂得多的结构化数据。特别适合 RESTful 的接口。传递JSON字符串可以方便的让前端转为js的对象,进行显示和逻辑操作。 5.text/plain 传统的ajax请求提交 function submit2() { var xhr = new XMLHttpRequest(); xhr.timeout = 2000; var obj = {a: 1, b: 2}; xhr.open('POST', '/'); xhr.send(obj);} 6.text/xml 是一种使用 HTTP 作为传输协议,XML 作为编码方式的远程调用规范 POST []() HTTP/1.1 Content-Type: text/xml <!--?xml version="1.0"?--> <methodcall> <methodname>method1</methodname> <params> <param> <value>50</value> </param> </params> </methodcall> 总结1.传统的ajax请求时候,Content-Type默认为"文本"类型。
2.传统的form提交的时候,Content-Type默认为"Form"类型。
7. 对于axios请求,不同的请求方式content-type也不同 function submit3() { var p1 = 'name=a&val=b'; var p1 = {name: a, val: b}; axios.post('/url', p1 )}当传递的是字符串的时候:application/x-www-form-urlencoded
当传递的是对象的时候:application/json
总结:
1.axios传递字符串的时候,Content-Type默认为"Form"类型。
2.axios传递对象的时候,Content-Type默认为"JSON"类型
content-type类型总结