您的位置:首页 > 理论基础 > 计算机网络

HTTP协议中GET和POST的区别

2020-03-05 19:33 281 查看

事实上,GET和POST并没有语法上的区别,二者仅仅是语义上的区别。
GET和POST的底层都是TCP链接,如果想要在GET请求的请求体中放置数据,或者在POST请求的URL中放置数据,这在技术上是完全可以实现的;但这并不符合HTTP协议的规范;那么,为什么HTTP协议要将这两者区分开来呢?又是以什么标准区分的呢?区分之后又会产生什么样的影响呢?

  1. 首先,为什么区分?
    如果把TCP/IP比作公路,GET和POST请求等TCP链接就像是汽车,而HTTP就是交通规则。为什么要将汽车区分开来呢?当然是为了方便管理了。

  2. 其次,是以什么标准区分的呢?
    幂等!
    GET请求是幂等的,而POST请求是不幂等的。幂等,就是一次请求和多次请求产生的副作用相同。
    举个例子,GET请求我们都知道通常用做请求资源,而POST请求则被用来提交资源;两者就像是读操作和写操作的关系,读一次和读多次效果是一样的,而写一次和写多次自然会产生不同的结果了。

  3. 最后,区分开之后又会产生什么样的影响呢?
    GET后退按钮/刷新无害,POST数据会被重新提交;GET书签可收藏,POST为书签不可收藏;GET能被缓存,POST不能缓存……balabala……
    此等区别,皆为表象。GET和POST请求的所有区别,都是在HTTP这套行为准则的规范下存在的,二者的使用方式决定了二者的区别。
    这也正是我第一句所讲到的“没有语法区别;只有语义区别。”

(PS:至于安全性,在面对攻击的时候,二者几乎同样脆弱;数据的安全还是依赖于加密处理,而业内通用做法是https)

  • 点赞
  • 收藏
  • 分享
  • 文章举报
京城西_ 发布了1 篇原创文章 · 获赞 0 · 访问量 28 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: