深入理解HTTP请求中GET和POST的区别(通俗易懂)

一般而言,大家在网上搜到的结果如下图所示

下面让我们深入的理解get和post的区别

关于HTTP

最初http协议作为浏览器和服务器的传输协议而产生的,浏览器用get请求来获取服务器的资源,例如html页面、图片、样式、js文件等等,利用post请求来提交表单同时得到一个结果反馈页,后来http被广泛应用到Ajax接口定义上,get和post则用于具体的请求方式。

1.参数摆放位置

协议本身并没有强制规定get请求的参数一定放在query,post请求的参数一定要放在body中。从接口定义的角度看,纯粹只是请求方式的差异,协议本身并没有对两者做过多的限制,你完全可以将get请求的参数放在body,post请求的参数放在query中,当然过分的开放,会增加项目开发的成本,降低开发效率。

2.GET请求长度有上限,POST传输无上限

这种说法其实是片面的,get请求的参数一般约定俗称放在url的query中,而又因为url的长度有上限,才得出此结论。关于url的长度,http协议本身没有过多的对get和post做过多的限制,只是浏览器和服务器分别做了不同程度的限制,像IE浏览器限制在2048个字符,chrome限制在2M Safari,其他浏览器各有各的限制,但都会比IE大,即参数可以更多。

做这个限制主要原因是服务器解析一个字符串时,需要分配内存,而url必须作为一个整体看待,没有办法分块处理,所以必须预先分配一块足够大的内存来存储url,如果url太长或并发量太高的话,就很容易把服务器的内存占满,从而使服务器崩溃,为了解决该问题,双方对url的长度都做了不同程度的处理。

3.POST 方法比 GET 方法安全?

正如前面所说,get和post只是请求方式的不同,大家约定俗成的将get请求的参数放在query,post请求的参数放在body中,相当于将请求的参数放到url中,如果中间带有密码信息,显得不怎么安全,但对于网络的角度来说,query和body上的参数都是明文的,http本身就是不安全的协议,真正要做到安全需要双端加密,例如https双端加密后,即使在任何网络节点截取了包,也读不到内容,这样才是真正的安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值