get和post其实本质上是没有任何区别的,他们都是TCP/IP链接。
之所以我们通常认为他们有所区别,是因为在浏览器/服务器模式下,浏览器对get/post有着不同的处理。
下面我们看一下具体的区别:
1.get参数一般通过url传递,post则是通过request body传递(常用);
2.get请求在url中传送的参数是有长度限制的,post没有(http协议对get/post都没有长度的限制,通常是由服务器添加的限制,并且这个限制针对是http请求);
3.get请求时只产生一个TCP数据包,post则产生两个TCP数据包(在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视;在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点);
4.get请求会被浏览器主动cache,post不会,除非手动设置;
5.get只能进行url编码,post支持多种编码方式;
6.get请求参数会被完整保留在浏览器历史记录里,post的参数不会保留;
7.get在浏览器回退时是无害的,post则会再一次提交请求;
8.get产生的url地址可以被Bookmark,post不可以。