传输存放位置:
GET会把请求放在URL上,以?分割URL与GET参数,GET参数之间用&分割,因为URL只支持ASCII,所以GET也只能妥协,只支持ASCII编码
POST‘将数据放在HTTP请求体内,而body中可以支持多种字符编码,所以post请求的字符编码也比较多样,但需要cli与serv商量好使用何种编码
请求长度:
GET在 url上,一般请求长度不超过2k
POST在body内,无长度限制
缓存:
GET请求返回的内容可以被浏览器缓存起来。
GET的历史参数可以保存在浏览器的历史中,POST不会
而每次提交的POST,浏览器在你按 下F5的时候会跳出确认框,浏览器不会缓存POST请求返回的内容。
安全性:
在http协议中规定:GET为幂等性操作,是安全的,POST为非幂等性,不安全
在http传输的角度看,HTTP协议本就是明文传输,所以无论GET和POST都不够安全,但POST相对安全
若要保证传输安全,业界通用做法是使用SSL对http报文进行端到端加密。
POST和GET的选择
私密性的信息请求(如登录),提交的数据量大(如表单),不幂等的提交(下订单)等,可以使用POST。
查询信息,想要通过url分享的信息使用GET。