本节文章的内容主要是在请求主体中content-type的作用是什么?
-
前言,在我之前的文章中有说到,响应头中的content-type是为了让浏览器知道,服务器到底发送了什么东西过来,以便正确的解析响应主体。
Snipaste_2018-01-30_15-37-28.png - 而请求头中的content-type是用来做什么的呢?
因为浏览器也可以向服务器发送数据,而浏览器发送的数据也是多种多样的,这种情况下,我们也就有必要告诉服务器应该怎么样处理浏览器发送过来的数据。
因为post方式发送数据的时候,会存在请求主体,而请求头中的content-type也就是告诉服务器,应该用怎样的方式去处理请求主体。相当于是,你将请求主体中的数据发送出去之后,你还必须告诉服务器,我发送的数据是什么类型的,这样服务器才能正确解析请求主体的内容(如果没有content-type或者content-type的设置是错的,都会导致浏览器无法正确解析请求主体,也就无法对数据做出正确响应了。)这也就是为什么get方式不用设置content-yppe,因为get方式发送请求的时候,并没有请求主体,只有查询字符串。而POST方式发送请求必须设置content-type的原因了(当然了如果POST请求的请求主体为空,也就可以不用设置content-type了,因为content-type的作用就是告诉服务器,应该怎么样处理请求主体的数据,所以在POST中没有发送数据的话,也就不用告诉服务器我们的数据是以那种方式编码的,服务器也就不用使用相应的数据进行解码,当然了一般情况下POST都是发送数据的,所以推荐无论什么时候POST请求时,都设置content-type)。
说句题外的,我用抓包工具看了之后,GET请求压根就没有content-type,讲道理来说,AJAX作用是模拟HTTP协议发送请求,所以装也要装的像点,HTTP有的AJAX请求应该都有,HTTP没有的,AJAX也应该都没有,AJAX请求时是否需要设置content-type与HTTP协议本身需要保持一致,如果哪一天你忘了,打开抓包工具看一下也应该记起来,到底怎么发AJAX请求。
网友评论