一、Get和Post是什么
HTTP协议中的两种发送请求的方法,本质上都是在进行TCP连接
二、Get请求
从指定的服务器中获取数据,直接在浏览器里输入就可以获取信息
三、Post的请求
提交数据给指定的服务器处理,可以向服务器发送修改请求,从而修改服务器的数据,需要借助测试工具
四、Get和Post请求的基本区别
Get请求 | Post请求 |
---|---|
get请求能够被缓存 | post请求不能被缓存 |
get请求会保存在浏览器的浏览记录中 | post请求不会保存在浏览器浏览记录中 |
以get请求的url能够保存为浏览器书签 | 以post请求的url无法保存为浏览器书签 |
get请求有长度限制,<=2k-4k | post请求根据配置文件设定,也可无限大 |
Get是从服务器上获取数据 | Post是向服务器传送数据 |
回退or刷新:没有影响 | 回退or刷新:会重新发送提交请求 |
GET请求只能进行url编码 | POST支持多种编码方式 |
GET只接受ASCII字符(数据类型) | POST对数据类型没有限制 |
GET不安全,参数直接暴露在url中,不能传递敏感信息 | POST更安全,参数放在body体中 |
五、Get和Post请求的深入区别
5.1.简单地说
- GET产生一个TCP数据包。
- POST产生两个TCP数据包。
5.2.复杂的说
1.对于GET请求,浏览器会把http header和data一起发送出去,服务器响应200,请求成功。
2.对于POST请求,浏览器先发送header,服务器会响应100(已经收到请求的第一部分,正在等待其余部分),浏览器再次发送data,服务器返回200,请求成功。
5.3.POST请求需要两步,时间消耗会比GET请求更长吗?不会
1.GET请求和POST请求都有自己的语义,不能随便混用;
2.在网络环境好的情况下,发送一次包的时间和发送两次包的时间差可以忽略;
3.在网络环境差的情况下,发送两次包的TCP在验证数据的完整性上,有非常大优势;
4.并不是所有的浏览器都会在POST请求中发送两次包,比如:火狐Firefox就只发送一次。