1、HTTP规范
- HTTP 协议规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。
- 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
- 但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如Java 等,以都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
- 所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。
2、ajax中POST请求中的Content-Type
ajax请求体的几种类型:
(1)application/x-www-form-urlencoded
1,很多时候,我们用 Ajax 提交数据时,也是使用这种方式。
例如 JQuery的 Ajax,Content-Type默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
2,如果你用js写ajax要用这种方式,一定要注意加上setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”);否则服务端无法正常解析。
(2),multipart/form-data这也是一个常见的 POST 数据提交的方式。
【注意】上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段原生 form 表单也只支持这两种方式,但是随着越来越多的 Web 站点,尤其是 WebApp,全部使用 Ajax 进行数据交互之后,我们完全可以定义新的数据提交方式,给开发带来更多便利。
(3)application/json
JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。
(4)text/xml
相比于JSON,XML不能更好的适用于数据交换,它包含了太多的包装, 而且它跟大多数编程语言的数据模型不匹配,让大多数程序员感到诧异。
XML是面向数据的,JSON是面向对象和结构的,后者会给程序员一种更加亲切的感觉。
下面就是ajax Content-Type为text/xml的请求:
例子:
转载于:https://blog.csdn.net/qq_38737586/article/details/99629349
没弄明白的问题:请求体不同获取不到数据,怎么和后端协商修改
https://blog.csdn.net/zhuwei_clark/article/details/84073100