详解Get与Post的区别
一提到Get与Post的区别,大多数人可能第一个想到的是Post更安全,get 比post传输长度更小等。但是这些都太不准确了。
get 和 post 都是基于HTTP的请求方法。而HTTP的request消息格式是由请求头,请求体,空行,请求数据组成。
理解误区:
1、大部分人认为Get请求参数长度(URL)是有限制的,而Post没有限制。实际上,HTTP并没有规定Get的请求参数长度,Get请求参数的长度是被浏览器或者服务器限制的。
2、Get请求也可以带数据,就是把数据放到请求体里面。但是这个数据不一定被读到,因为服务器不同,处理的方式也不同,可能服务器就把数据无视掉了。
3、Post比Get安全性高也是相对而言的。因为相对于Get请求方式,Post是不会把请求页面缓存的,通过历史记录也查不到,并且通过post提交的数据也不都会显示在URL上,但是Get会这样的。而且GET会带来CSRF(Cross site request forgery),不过即使改成POST也没用,还是可能会发生CSRF 攻击下面的文章可以参考:
https://blog.techbridge.cc/2017/02/25/csrf-introduction/
4、Get请求是会被浏览器缓存的。
Why?Get请求类似在查找一个数据,所以适合用缓存,不用直接与数据库进行交互。Post请求需要与数据库进行修改,删除增加等操作,所以要与数据库进行交互,因此不适合缓存!!另外大部分用URL访问的都是Get请求啦。