对于面试:POST和GET请求方式的终极回答

针对网络请求中,请求方式POST和GET的区别?相比大家在面试中或多或少的遇到过,无论你是后端,前段,移动端。对于一些基本的区别我们多少都能说出一大段,可是每次回答完毕,经常看到面试官一副欲求未满的表情。那怎样才能是完美的回答呢。那么今天这篇文章就让我们来学习一番!


GET和POST是HTTP请求的两种基本方法(其他的还包括:PUT,DELETE),最直观的区别就是GET把参数包含在URRL中,POST将参数封装在RequestBody中。


基本区别:

1,GET通常从服务器获取数据,POST通常向服务器提交数据。

2,GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单字段一一对应,在URL中可以直观看到。POST是通过HTTP pos机制,将表单内各个字段与其内容在HTML HEADER内一起传送到ACTION属性所指的URL地址,用户无法看到这个过程。

3,GET方式服务器端用Request.QueryString 获取变量的值,POST方式服务器用Request.Form获取提交的数据。

4,GET提交方式的数据最多只能1024字节,POST理论上没有限制。

5,GET安全性非常低,POST安全性比较高,敏感信息禁止使用GET方式提交。


想必你对这些基本的区别肯定是了熟于心,当面试官问起,感觉就是为你量身打造。可你回答完毕,对方内心毫无波澜,甚至。。。。!对你说了句:“这不是我想要的答案”


那我们就来深挖一下本质!

GET和POST是什么?HTTP协议中两种发送请求的方法。

HTTP是什么?HTTP是基于TCP/IP的关于数据如何在万维网中如何通信的协议。

HTTP底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP/IP链接。

其实GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致她们在应用过程中提现出一些不同。


你以为这就完了,那你就太天真了!


GET和POST还有一个最重大的区别:

总结来说:GET产生一个TCP数据包;POST产生两个数据包。

掰开来说:
对于GET请求,浏览器会把http header和data一起发过去,然后拿到服务器相应(比如200,返回数据);
而POST请求,浏览器先发送header,服务器相应100 continue,浏览器拿到相应再发送data,服务器相应200 ,返回数据。

也就是说,快递员送同一个包裹,GET跑一趟就送到了,POST需要跑两趟,第一趟先到门口确认一下是否在家,打个招呼“(。・∀・)ノ゙嗨,等下有个快递需要签收”,然后再把快递送过去。

因为POST需要两部,时间上花费比较多一点,看起来GET似乎更高效。因此就推荐使用GET来优化网络,告诉你,这是一个坑!!!

1,GET与POST都有自己的规则,不能混用,记住:存在即合理!
2,在网络优良的环境下,发两次包的时间与发一次包的差别基本可以无视。而在网络差的情况,两次包的TCP在验证数据包完整性上,具有很大优势。




猜你喜欢

转载自blog.csdn.net/ding_gc/article/details/78464383