POST和GET的部分知识

Posted this-is-y

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POST和GET的部分知识相关的知识,希望对你有一定的参考价值。

POST和GET的使用场景

1.请求中包含数据更新等副作用

2.发送敏感信息时(防止Referer等安全隐患)

3.发送的信息量很多时(URL长度有限,但是http协议并未规定get和post的长度限制,长度限制来源与浏览器与web服务器,而不同的浏览器和web服务器,限制的最大长度不一样)

(副作用是指除了获取资源(内容)以外的其他作用,比如追加,更新,删除服务器段数据,购买商品,注册/删除用户等操作,换言之,更新类的页面必须使用POST方法)

 

当发送的请求有上述其中一条以上时,应该使用POST

 

POST和GET方法的优缺点:

  这里先放一篇写的很不错的博客链接:https://blog.csdn.net/qq_28483283/article/details/80207674

  以及知乎一篇关于POST和GET的帖子:https://zhuanlan.zhihu.com/p/73475134

  简单总结一下:

  1.   POST更安全(安全只是相对的,对于稍微会一点技术的人来说,拿bp或wireshark就可以看到POST传的数据,甚至还拍好了版。要更加安全还得https)
  2.   GET更快
  3.   POST可传递数据更多(GET因为浏览器等对URL的限制,传输数据大小有限)
  4.   POST能发送更多的数据类型(GET只能发送ASCII字符)
  5.   POST一般用于写入和修改数据,GET一般用于筛选和排序(如淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据

 

POST为什么比GET慢。

  • 先看POST和GET的请求详细过程

  GET:

  技术图片

 

 

   POST:

  技术图片

 

 

可以看到,POST在发送请求头给服务端,且得到服务端的确认后,才会发送请求数据。而GET直接在发送请求头的时候就把数据发送过去了

  • POST因为需要在请求的body部分增加数据,所以会多了几个数据描述部分的首部字段(如:content-type)。但是这个影响比较小,影响速度的原因主要还是第一个。
  • GET有缓存,POST没有缓存。在Chrome和FireFox下,如果检测到GET数据是静态资源,则会缓存,如果是数据,则不会
  • 针对GET有很多优化方案,然而这些在POST身上却不管用。比如管道通信,关于这个在https://blog.csdn.net/qq_28483283/article/details/80207674这个帖子里讲得非常详细,想了解可以看这个。

 

以上是关于POST和GET的部分知识的主要内容,如果未能解决你的问题,请参考以下文章

Get与Post的小知识

Java知识体系深度理解

网络相关知识

重要知识点angularjs $http.get 和 $http.post 传递参数(!!!格式不一样!!!!)

Http基础知识

零碎的知识小结