Loading

POST和GET区别

首先,要明确一点
POST和GET是HTTP请求的两种方式,都可实现将数据从浏览器向服务器发送带参数的请求。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
HTTP请求底层协议都是TCP/IP,所以两者没有本质的区别。

POST和GET的区别

HTTP中的幂等和副作用

副作用

指对服务器上的资源做改变,搜索是无副作用的,注册是副作用的

幂等

指一次和多次请求某一个资源应该具有同样的副作用

  • HTTP GET方法用于获取资源,不应有副作用,所以是幂等的,强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。GET请求可能会每次得到不同的结果,但它本身并没有产生任何副作用,因而是满足幂等性的。
  • POST所对应的URI并非创建的资源本身,而是资源的接收者。比如新发表一个帖子,发送两个post请求会创建两份资源,具有不同的url,所以,POST方法不具备幂等性

区别

  1. Get多用于无副作用,幂等,例如搜索,Post多用于有副作用,不幂等:例如注册

  2. GET产生一个TCP数据包;POST产生两个TCP数据包(先发送header,再发送data)

  3. URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的

  4. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。

  5. GET参数通过URL传递,POST放在Request body中。

  6. GET请求会被浏览器主动cache,而POST不会,除非手动设置。

  7. GET请求只能进行url编码,而POST支持多种编码方式

  8. GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。但抓包情况下都是一样的

posted @ 2021-01-17 11:07  不吃苦瓜^  阅读(46)  评论(0编辑  收藏  举报