1️⃣ GET请求与POST请求
2️⃣ 前言
HTTP设定了八种发送请求方式(也称为八大“动作”)。这八种方法没有任何本质上的区别。只是让请求,更加有语义化而已。 八种方法分别为:OPTIONS、HEAD、GET、POST、PUT、DELETE、TRACE、CONNECT 这八种方法最终经过“岁月沉淀”后,最常用的是这两种:GET、POST
2️⃣ GET
1. 含义:从指定的资源获取数据(一种“索取”的感觉)。
2. 什么时候使用GET请求较为合适?
(1)单纯获取数据的时。
(2)请求非敏感数据时。
2️⃣ POST
1.含义:向指定的资源提交要被处理的数据(一种“交差”的感觉)。
2.什么时候使用POST请求较为合适?
(1)传送相对敏感数据时。
(2)请求的结果有持续性的副作用,例如:传递的数据要写入数据库时。
备注:使用了POST不代表的绝对的安全。
2️⃣ 常见的GET请求:
1.浏览器地址栏输入网址时(即浏览器请求页面时,且无法手动更改)。
2.可以请求外部资源的html标签,例如:<img> <a> <link> <script>,且无法手动更改。
3.发送Ajax时若没有指定发送请求的方式,则使用GET方式,或者明确指出了使用GET请求。
4.form表单提交时,若没有指明方式,默认使用GET。
2️⃣ 常见的POST请求:
1.发送Ajax时,明确指出了使用POST方式时。
2.form表单提交时明确指出使用POST方式
2️⃣ GET 对比 POST
2️⃣ 八种请求方式
2️⃣ GET / POST 请求报文
(1) Accept
指定客户端能够接受的内容类型,内容类型的先后顺序表示客户端接受的先后顺序
比如:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
(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
(13) DNT: 1
浏览器告诉服务器:请求报头指示该用户的跟踪的偏好。它可以让用户指出他们是否更喜欢隐私而不是个性化内容。
0:用户喜欢允许在目标站点上进行跟踪。
1个:用户不希望在目标站点上被跟踪。
空值:用户尚未指定有关跟踪的首选项。
1️⃣ 响应报文
3️⃣ 报文首行
HTTP/1.1 200 OK
--协议名/协议版本 状态码
3️⃣ 报文头
X-Powered-By: Express
--服务器所采用的框架( 尽量不要让用户知道服务器具体采用的技术 )
Content-Type: text/html; charset=utf-8
--告诉浏览器返回资源的类型及编码格式
Content-Length: 2
--返回数据的长度
ETag: W/"2-eoX0dku9ba8cNUXvu/DyeabcC+s"
--协商缓存必要字段
Date: Fri, 01 Nov 2019 08:24:19 GMT
--响应的日期+时间
Connection: keep-alive
--服务器告诉浏览器,下次请求时,或许会采用长连接。