接口测试过程中 get与post之间的差别

get 和 post 请求区别,这个是被问烂的题了

首先这个题看似简单,实际上是个送命题!如果你百度搜到的标准答案可能是这
样的(本标准答案参考自 w3schools):
1.1GET 在浏览器回退时是无害的,而 POST 会再次提交请求。
1.2GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以。
1.3GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。
1.4GET 请求只能进行 url 编码,而 POST 支持多种编码方式。
1.5GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留。
1.6GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。
1.7对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制。
1.8GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息。
1.9GET 参数通过 URL 传递,POST 放在 Request body 中。如果我告诉你,你死记硬背的这些所谓“标准答案”不是面试官想要的,你肯定不服,首先从安全性讲,get 和 post 都一样,
2.0没啥所谓的哪个更安全get 请求参数在 url 地址上,直接暴露,post 请求的参数放 body 部分,按 F12也直接暴露了,所以没啥安全性可言
2.1“GET 参数通过 URL 传递,POST 放在 Request body 中”这个其实也不准,post请求也可以没 body,也可以在 url 传递呢?

如果我告诉你 get 请求和 post 请求本质上没区别,你肯定不信!

GET 和 POST 有一个重大区别,简单的说:

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

长的说:

对于 GET 方式的请求,浏览器会把 http header 和 data 一并发送出去,服务器

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

也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。

 

因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效。因此Yahoo团队有推荐用GET替换POST来优化网站性能。但这是一个坑!跳入需谨慎。为什么?

1. GET与POST都有自己的语义,不能随便混用。

2. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。

3. 并不是所有浏览器都会在POST中发送两次包,Firefox就只发送一次。

 

现在,当面试官再问你“GET与POST的区别”的时候,你的内心是不是这样的

posted @ 2020-05-14 23:11  岁月安好-成都  阅读(306)  评论(0编辑  收藏  举报