2024-05-07 15:18:01281浏览
初学者对get请求和post请求容易分不清,本文就来区分什么是get请求和post请求。
一、 GET和POST是什么?
HTTP协议中的两种发送请求的方法,本质上都是在进行TCP连接.
二、GET请求和POST请求的区别是什么?
GET请求参数是通过URL进行传递的,POST请求的参数包含在请求体当中。
GET请求比POST请求更不安全,因为参数直接暴露在URL中,所以,GET请求不能用来传递敏感信息。
GET请求在url中传递的参数是有长度限制的(在HTTP协议中并没有对URL的长度进行限制,限制是特定的浏览器以及服务器对他的限制,不同浏览器限制的长度不同。),POST对长度没有限制。
GET请求参数会完整的保留在浏览器的历史记录中,POST请求的参数不会保留。
GET请求进行url编码(百分号编码),POST请求支持多种编码方式。
GET请求产生的URL地址是可以被bookmark(添加书签)的,POST请求不可以。
GET请求在浏览器回退的时候是无害的,POST请求会.再次提交数据。
GET请求在浏览器中可以被主动cache(缓存),而POST请求不会,可以手动设置。
三、 深入理解
1、GET和POST还有一个重大的区别:
简单来说:
GET产生一个TCP数据包。
POST产生两个TCP数据包。
复杂的说:
对于GET请求,浏览器会把http header和data一起发送出去,服务器响应200,请求成功。
对于POST请求,浏览器先发送header,服务器会响应100(已经收到请求的第一部分,正在等待其余部分),浏览器再次发送data,服务器返回200,请求成功。
2、既然POST请求需要两步,那么时间上的消耗会不会比GET请求更多?答案是:不会。
GET请求和POST请求都有自己的语义,不能随便混用。
在网络环境好的情况下,发送一次包的时间和发送两次包的时间差可以忽 略,在网络环境差的情况下,发送两次包的TCP在验证数据的完整性上,有非常大的优势。
并不是所有的浏览器都会在POST请求中发送两次包。有个例外,火狐浏览器只发送一次包。具体是什么原因,感兴趣的同学可以去了解一下,这里,我就不再过多延伸了。
问题反馈