HTTP协议- Get 和 Post 的区别

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 不会。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值