HTTP协议- Get 和 Post 的区别

2019-11-01  本文已影响0人  猫与测试

Http 请求方法中最最常见的两种方法为 getpost

我们常常会被问到这样一个问题:

get 与 post 区别?

因为是面试常见问题,所以网上的答案也很多。我这里以我常在课堂上用的一个例子来说明。

首先,我们要明白 HTTP 协议的作用是什么? HTTP(Hyper Text Transfer Protocol) 超文本传输协议。

注意,重点是传输协议!就像高速公路(网络)运行的货车一样,而货物就是传递的数据,从客户端拉货到服务器端,再从服务器端拉新的货物到客户端。

那么如果我们把货车换成火车!

get
post

一个是 get 请求,一个是 post 请求。

来,我们来对比一下两个请求的区别:

  1. 从安全性来说
    get 请求由于参数(数据)组装在 url 中,不安全(挂在外面,当然不安全。)
    post 请求的参数都在消息体内部(body),所以相对肯定更安全吧。
  2. 从运载能力来说
    get 请求有容量限制(由于挂在外面,毕竟抓手的地方就那么多点,所以运载能力有限);
    post 请求没有容量限制(不够再加车厢)。
  3. 从允许的数据类型来说
    get 请求只能发送文本ASCII字符(车厢外面只能用手抓着,什么猫啊狗啊其他货物啊,当然挂不住);
    post 请求可以发送任意类型的数据(车厢里面,只要允许随便放嘛)。

主要的区别就是以上三点,以后被问到这个问题的时候,想一想火车(🧔)。

补充:
get 请求在 http 协议中是没有容量限制的,容量的限制来源于浏览器和服务器软件;
get 数据能够被缓存、收藏、历史记录,而 post 不会。

例子是否贴切,见仁见智,不过也算是一种形象记忆法。

上一篇 下一篇

猜你喜欢

热点阅读