get通常用于从服务器中取数据比如获取新闻列表,文件列表等,post通常用于往服务器存数据,修改表单信息,上传文件等。
一、从传参来讲
- get传参在请求头上(url地址?后以'='分割的键值对方式);post传参在请求体内
- get传参需要用URI编码方式(ASCLL码),如果传参非ASCLL码可以用js中encodeURI对参数进行转化,post对编码方式无限制
- http协议并未对传参大小作限制,浏览器从性能方面考虑往往限制了大小 ,get请求的urlIE为2kb 谷歌8kb,post请求参数tomcat默认限制为2mb(通过配置可以修改大小),url超出限制状态码会返回414
- get请求传参有浏览器历史记录,post请求无浏览器历史记录
二、从页面来讲
- get请求默认有缓存,post请求无缓存(可手动设置)
- get请求可以添加为书签,可储存,post请求无法存储
- get请求回退刷新无影响,post请求会重新发起请求
三、从性能来讲
- get请求产生一个TCP数据包,发送 请求行 和 请求头,服务器返回200;post请求产生两个TCP数据包,一次带着请求行和请求头(编码方式等)发送,服务器响应100 continue,然后在发送请求体,服务器响应200