相同点:本质上都是TCP连接。
不同点:由于HTTP规定和服务器/浏览器限制,在应用过程中区别如下:
1.get产生一个TCP数据包,post 产生两个TCP数据包
get请求,浏览器会把http header和data一起发送,服务器响应200(返回数据)
post请求 浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200(返回数据)
2.get 在浏览器回退时是无害的。post会再次请求;
3.get产生的URL地址可以被bookmark,而post不可以;
4.get请求会被浏览器主动cache,二post不行(除非设置)
5.get请求参数会被完整保留在历史记录,post不会
6.对参数的数据类型,get只接受ASCII字符,post无限制
7.get通过url传参不安全,不能传敏感信息,长度收限制2kb,post参数放在request body中,相比较安全一些,无长度限制(可配置)
8.get请求只能进行url编码,post可以多种方式,例如下面方式:
1.application/x-www-form-urlencoded 表单——>数组
2.multipart/form-data 文件上传(表单上传时enctpe的值)
3.application/json 序列化的json字符串
4.text/xml等。