2018 GET和POST区别

get和post大家都不陌生,是我们经常谈到以及面试都会问到的问题,但是有时候是真的分不清

我想大家听到这个问题,第一反应会想到以下几点

1. GET使用URL或Cookie传参,但POST将数据放在request body中。

2. GET的URL会有长度上的限制,则POST的数据则没有限制。  

3. POST比GET安全,因为数据在地址栏上不可见。

还有一点是:

  • get请求只能进行url编码,而post支持多种编码方式

  • get请求会浏览器主动cache,而post支持多种编码方式。

  • get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留

最后这一点说到的人不多,但是这只是基本的回答。

其实这只是其中的一部分,我们目前还么抓到重点...

其实get和post最大的区别在于:

GET产生一个TCP数据包;POST产生两个TCP数据包。

我们都知道HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,这都是可行的,所以我们这时候就知道GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 

再说的明白一点:

对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据)

而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)

我看了几篇大神的博客,他们都说到了一点:据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

这时候我们可能多少会有点懵,还是需要好好消化一下。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值