Get请求和Post请求方法的区别?
-
Get和Post是HTTP协议的两种发送请求的方法
HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议;
-
Get和Post底层都是基于TCP连接的,本质上没有区别
区别的出现是因为
原因一:HTTP协议的封装下,传输渠道的不同;
原因二:由于浏览器限制url的长度在2k个字节,服务器也最多处理64k大小的url
直观体现:最直观的Get将参数包含在URL中,Post将参数包含在request body请求体中(区别1) -
另一方面
GET和POST还有一个重大区别,简单的说:
GET产生一个TCP数据包;POST产生两个TCP数据包。(区别2)
详细点说:
对于GET请求:浏览器把http header和data一并发送出去,服务器响应200(返回数据)
对于POST请求:浏览器发送header,服务器响应100,浏览器再发送data,服务器响应200(返回数据) -
但是这并不能说明get比post更为有效,原因如下:
1、get和post都有自己的使用场景,不能随便混用
2、在网络环境好的情况下,发一次数据包的时间和发两次数据包的时间基本一致,在网络差的情况下,两次数据包在验证数据完整性上有很大的优点
3、并不是所有的浏览器都发送两次数据包,firefox在Post请求中只发送一次数据包
其他区别:
- GET请求只能进行url编码,而POST支持多种编码方式。
- GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留
- GET请求在URL中传送的参数是有长度限制的,而POST没有
- GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息