http请求报文的组成
http请求报文由请求行,请求头,请求体三部分组成。
请求行主要包括:
请求的方法,最常用的主要是GET,POST,OPTIONS表示查询web服务器的性能。
请求的url,比如/person/getById,
HTTP协议:http1.1
请求头就是我们常说的头部信息,比如Content-Type,Host,Origin等
请求体就是请求参数,比如根据id查询时,id的值等,本章我们重点介绍下常见的请求头属性
它们之间的关系就像你点了一份外卖一样。
常见的请求头属性
下面是摘自www.baidu.com和一个示例网站的请求头
(1) Accept
指定客户端能够接受的内容类型,内容类型的先后顺序表示客户端接受的先后顺序
比如:Accept:text/html,application/xml
(2) Accept-Encoding
指定客户端浏览器可以支持的web服务器返回内容压缩编码类型
允许服务器在将输入内容发送到客户端以前进行压缩,以节约带宽。
比如:Accept-Encoding:gzip,deflate
(3) Accept-Language
指定http客户端浏览器用来展示返回信息所先选择的语言
比如:
Accept-Language:zh-cn,zh;q=0.5 后面的q表示权重
(4) Connection
表示是否需要持久连接,
比如:Connection:keep-Alive
(5) Content-Length
用于描述http消息实体的传输长度.需要注意的是:在http协议中,消息实体的长度和消息实体的传输长度是有区别的。
比如说gzip压缩下,消息实体长度是压缩前的长度,但是消息实体的传输长度是gzip压缩后的长度
(6) Content-Type
显示此http请求提交的内容类型
比如:Content-Type:application/x-www-form-urlencoded;charset:UTF-8
"application/x-www-form-urlencoded"是浏览器的默认值,表示表单数据向服务器提交时所采用的编码类型。
(7) Cookie
http请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器
(8) Host
请求的web服务器域名地址
例:www.baidu.com
(9) Origin
跨域的时候,get,post都会显示origin,同域的时候get不显示origin,post显示origin
(10) Referer
包含一个url,用户从该url代表的页面触发访问当前请求的页面
(11) User-Agent
http客户端运行的浏览器类型,详情。后台可以根据该头部信息,判断当前的http请求的客户端浏览器类型
(12) X-Requested-With
用来判断客户端的请求是Ajax请求(异步)还是其他请求(同步)
后台可以利用request.getHeader("x-requested-with")为null判断是同步请求,为XMLHttpRequest则是Ajax异步请求
例:X-Requested-With:XMLHttpRequest