基础:
Get产生的URL地址可以被当做书签收藏起来(BookMark),Post不可以;
Get在浏览器回退的时候是无害的,从缓存中取,Post会再次提交请求;
Get只能进行url编码,Post支持多种编码方式;
Get请求参数能完整地被记录在浏览器历史里,Post参数不会被保留;
Get在url中传送的参数长度有限制(小于2kb),Post没有;
参数的数据类型,Get只接受ASCII字符,Post没有限制;
Get参数通过url传递,Post放在Request body中;
进阶:
Get和Post只是TCP/IP的两种请求规则,是HTTP协议规定的,但底层还是TCP/IP,因此我们完全可以在Get里添加Request body数据,也可以把Post中的数据写在url上,只不过服务器可能对这种特殊的情况不处理。
重大区别:
Get产生一个TCP数据包,Post产生两个TCP数据包。
对于Get请求,浏览器会把http header和data一起发送出去,服务器响应200返回数据;
对于Post请求,浏览器先发送header,服务器响应100 continue,浏览器在发送data,服务器响应200返回数据。
简单的说,即Get请求一趟完成,Post两趟完成(当然也有例外,火狐)