get是向服务器端请求数据,post是提交数据
get幂等,post不幂等
get和post本质上就是tcp链接,get产生一个tcp数据包;post产生两个tcp数据包,对于get方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); 而对于post,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
get后退按钮/刷新无害,post数据会被重新提交
get能被缓存,post不能缓存
get对数据长度有限制,当发送数据时,get 方法向 url 添加数据;url 的长度是受限制的(url 的最大长度是 2048 个字符)。post无限制
get只允许 ASCII 字符。post没有限制。也允许二进制数据
get的数据在 url 中对所有人都是可见的。post的数据不会显示在 url 中
post比get安全,因为参数不会被保存在浏览器历史或 web 服务器日志中