一、标准答案
1.get请求有大小限制,一般为2kb,post一般没有大小限制。
2.get请求放在url中,post请求放在报文体中
3.get请求在url中可见,安全性不如post
4.get请求具有幂等性,post请求不具有幂等性
二、本质答案:
1.二者都是http请求,基于tcp/ip传输,并无差别。但是由于Http的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。
(1)http就像是交通规则,给TCP设立几种标签:GET, POST, PUT, DELETE。
-》get标签就将东西放在车顶
-》post标签就将东西放在车内
(2)浏览器和服务器就像运输公司,会限制单次传输的数量。
(2)http是行为准则,tcp连接才是本质
2.get产生一个TCP数据包,post产生两个TCP数据包
(1)get:浏览器把http header和data一起发送,服务器响应200;
(2)post:浏览器先发header,服务器响应100continus。浏览器再发data,服务器响应200;
->看起来发两次会性能比较低,但实际上可靠性提升了很多
->post和get都有自己的语义,不能随便乱用
->不是所有的浏览器对post都会发两次,fireFox就只发一次。
参考文章:https://www.oschina.net/news/77354/http-get-post-different