feign post 传递空值_99% 的人都理解错了 HTTP 中 GET 与 POST 的区别【面试必问】

0a765e52e29f6e99297cb938d93826f9.png

9febaa65bd40c523525aa9a319dad865.png

先分析一波:

1、GET和POST与数据如何传递没有关系??

GET和POST是由HTTP协议定义的。那么使用哪个方式与应用层的数据如何传输是没有相互关系的。从而,HTTP就没有要求,POST一定要放到请求体里面,GET就一定要放到URL里面。

在HTML标准中,是有着类似的定义。但这只是HTML标准对HTTP协议的用法的约定。也就是规范上说,无区别。

那么,这个说法是从何而来的呢?是因为有各种浏览器等软件的实现,就变成了我们现在熟知的现象,GET要用URL传参,POST用body传参。

2、HTTP协议对GET和POST有没有对长度的限制??

HTTP协议明确地指出了,HTTP请求头和请求体都没有长度的要求。

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

1、浏览器。

据说IE对URL长度会限制在2048个字符内。但是就我所知,firefox是支持10W以上的长度。

2、服务器。

服务器处理超长的URL本身就是一种负担,更何况遭受恶意攻击呢?

因此,多数服务器出于安全、稳定等多方面的考虑,会给URL长度加限制。但是这个限制是针对所有HTTP请求的,与GET、POST没有关系。

3安全不安全和GET、POST有没有关系??

这个问题,首先你得确认面向对象。

举个例子:

1、你现在要让我爸爸妈妈去看看这个URL,你觉得安全吗?

2、你现在要让一个刚入门的初级功能测试工程师去测试这个链接,你觉得安全吗?

3、你现在要让安全测试工程师去看看get请求,你觉得安全吗?

所以,针对不同的人群,安全的定义就会不一样。

“如果你愿意一层一层一层的剥开我的心 ,你会发现你会讶异 ,你是我最压抑 ,最深处的秘密 ”

把Get和Post剥开后,他们的本质上就是TCP链接,并无差别。


只是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。

那么真相到底是什么呢?

Get产生一个TCP数据包;Post产生两个TCP数据包。


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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值