Ajax 请求头中常见content-type(Ajax发送请求的请求体数据的编码格式)

1、HTTP规范

  • HTTP 协议规范把 HTTP 请求分为三个部分:状态行、请求头、消息主体。
  • 协议规定 POST 提交的数据必须放在消息主体(entity-body)中,但协议并没有规定数据必须使用什么编码方式。实际上,开发者完全可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。
  • 但是,数据发送出去,还要服务端解析成功才有意义。一般服务端语言如Java 等,以都内置了自动解析常见数据格式的功能。服务端通常是根据请求头(headers)中的 Content-Type 字段来获知请求中的消息主体是用何种方式编码,再对主体进行解析。
  • 所以说到 POST 提交数据方案,包含了 Content-Type 和消息主体编码方式两部分。

2、ajax中POST请求中的Content-Type

1)application/x-www-form-urlencoded

  • 很多时候,我们用 Ajax 提交数据时,也是使用这种方式。例如 JQuery的 Ajax,Content-Type默认值都是「application/x-www-form-urlencoded;charset=utf-8」。
  • 如果你用js写ajax要用这种方式,一定要注意加上setRequestHeader(“Content-type”,“application/x-www-form-urlencoded”);否则服务端无法正常解析。

Ajax 请求头中常见content-type(Ajax发送请求的请求体数据的编码格式)_第1张图片2)multipart/form-data这也是一个常见的 POST 数据提交的方式。Ajax 请求头中常见content-type(Ajax发送请求的请求体数据的编码格式)_第2张图片【注意】上面提到的这两种 POST 数据的方式,都是浏览器原生支持的,而且现阶段原生 form 表单也只支持这两种方式,但是随着越来越多的 Web 站点,尤其是 WebApp,全部使用 Ajax 进行数据交互之后,我们完全可以定义新的数据提交方式,给开发带来更多便利。


(3)application/json

  • JSON 格式支持比键值对复杂得多的结构化数据,这一点也很有用。

  • Ajax 请求头中常见content-type(Ajax发送请求的请求体数据的编码格式)_第3张图片
    4)text/xml

  • 相比于JSON,XML不能更好的适用于数据交换,它包含了太多的包装, 而且它跟大多数编程语言的数据模型不匹配,让大多数程序员感到诧异。

  • XML是面向数据的,JSON是面向对象和结构的,后者会给程序员一种更加亲切的感觉。

  • 下面就是ajax Content-Type为text/xml的请求:

Ajax 请求头中常见content-type(Ajax发送请求的请求体数据的编码格式)_第4张图片Ajax 请求头中常见content-type(Ajax发送请求的请求体数据的编码格式)_第5张图片

你可能感兴趣的