HTTP协议- Get 和 Post 的区别
2019-11-01 本文已影响0人
猫与测试
Http 请求方法中最最常见的两种方法为 get
和post
。
我们常常会被问到这样一个问题:
get 与 post 区别?
因为是面试常见问题,所以网上的答案也很多。我这里以我常在课堂上用的一个例子来说明。
首先,我们要明白 HTTP 协议的作用是什么? HTTP(Hyper Text Transfer Protocol) 超文本传输协议。
注意,重点是传输协议!就像高速公路(网络)运行的货车一样,而货物就是传递的数据,从客户端拉货到服务器端,再从服务器端拉新的货物到客户端。
那么如果我们把货车换成火车!
![](https://img.haomeiwen.com/i8178525/5960199c2aaae610.png)
![](https://img.haomeiwen.com/i8178525/c4ce87b6c5aa3f5d.png)
一个是 get 请求,一个是 post 请求。
来,我们来对比一下两个请求的区别:
-
从安全性来说:
get 请求由于参数(数据)组装在 url 中,不安全(挂在外面,当然不安全。)
post 请求的参数都在消息体内部(body),所以相对肯定更安全吧。 -
从运载能力来说:
get 请求有容量限制(由于挂在外面,毕竟抓手的地方就那么多点,所以运载能力有限);
post 请求没有容量限制(不够再加车厢)。 -
从允许的数据类型来说:
get 请求只能发送文本ASCII字符
(车厢外面只能用手抓着,什么猫啊狗啊其他货物啊,当然挂不住);
post 请求可以发送任意类型的数据(车厢里面,只要允许随便放嘛)。
主要的区别就是以上三点,以后被问到这个问题的时候,想一想火车(🧔)。
补充:
get 请求在 http 协议中是没有容量限制的,容量的限制来源于浏览器和服务器软件;
get 数据能够被缓存、收藏、历史记录,而 post 不会。
例子是否贴切,见仁见智,不过也算是一种形象记忆法。