|  在技术加营销的道路上越走越远
温馨提示
我是弹窗内容
当前位置:首页 > 后端技能提升 > Http请求方法中Get和Post的区别?纠正一下网上大部分人流传的错误认识
Http请求方法中Get和Post的区别?纠正一下网上大部分人流传的错误认识

Http请求方法中Get和Post的区别?纠正一下网上大部分人流传的错误认识

日期:2021-08-24 浏览量:1445 原创作者:湖八爷
http请求方法中get和post有什么区别?这是一个有关于http协议的基础知识点,也是很多面试官喜欢问的一个知识点。

我们随手百度一下,会发现有无数帖子和文章详细介绍它们俩的区别,但是大多数内容都大同小异,我们可以列举几个最普遍的出来:

1:Get使用URL或者Cookie传递参数,而Post将数据放在Body中。

2:GET的URL会有长度上的限制,则POST的数据则可以非常大。

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


是不是觉得这些区别看起来很熟悉?但是很不幸,你熟悉的这些最普遍的认知其实都是错误的。

更好笑的是不管我们用百度,谷歌,知乎还是CSDN去搜索“Get和Post的区别?”,这些错误的帖子居然都排在最前面。



错误认知一:Get使用URL或者Cookie传递参数,而Post将数据放在Body中。

1:Get和Post是由http协议定义的。在http协议中,Method和Data(URL,Body,Header)是正交关系,也就是说,使用哪个Method与应用层的数据如何传输是没有相互关系的。

2:Http没有要求,如果method是Post数据就一定要放在BODY中,也没有要求,如果Method是Get数据就一定要放在URL中而不能放在Body中。



错误认知二:GET的URL会有长度上的限制,则POST的数据则可以非常大。

1:Http协议明确的指出了,Http头和Body都没有长度的限制。

2:而对于URL长度的限制,有两方面的原因:

一是"浏览器",早期的浏览器会对URL长度做限制。比如IE对URL长度的限制在2048字符内。

二是"服务器",因为URL长了对服务器也是一种负担。



错误认知三:POST比GET安全,因为数据在地址栏上不可见。

1:安全不安全和GET、POST没有关系。虽然说使用Post请求方式传递的数据不会再地址栏上显示,不可以直接看到,但是这不代表程序员就看不到了,使用简单的抓包技术就可以截包并重发。

2:如果仅仅因为普通人看不到就觉得安全,那Get同样可以做到,我们可以把URL参数全部Encode或Base64一下,普通人就算看到了也看不懂。



说明一下,我是一个全栈程序员,我不仅做过Web开发,也做过Windows桌面应用开发,所以我对Http协议的认知纯粹是基于RFC文档的理解。



最后说一下我对Htpp请求方法中Get和Post区别的理解。

1:它们的名字不同。

2:使用习惯上的不同,Get常用于获取数据,Post常用于提交和修改数据。

3:使用场景的不同会导致它们出现各种差异。比如在浏览器中,在APP中,在服务器中等场景。