面试问到GET和POST的区别?不要只说get拿数据,post传数据了

首先来聊聊HTTP:

1.最初是浏览器与服务器之间的通讯协议,GET用于读取资源,POST用于提交表单。

2.后来被扩充到接口格式的定义,GET和POST作为接口的请求方式。

在这里插入图片描述

浏览器利用GET请求来读取一个资源,例如HTML页面 样式文件 JS文件和图片等等

利用POST来提交一个表单 同时得到一个结果反馈页

后来,HTTP被广泛运用到AJAX接口定义上,GET和POST则用于定义具体的请求方式

{
	Method:{GET/POST}
	Url:{http://xxx/x}
	Header:{}
	Body:{}
}

协议本身并没有强制要求GET请求的参数一定要放query,POST请求的参数一定要放body

也就是说,从接口定义的角度去看,GET和POST纯粹只是一个请求方式的差异,协议本身并没有针对两者做过多的限制,完全可以把GET请求的参数放到body或把POST请求的参数放到query

但是当约定过度的开放时,会增加项目开发的沟通成本,降低开发效率

然后就是大家经常说的 GET请求有长度上限,POST传输无上限?

其实这种说法是比较片面

//GET请求:
http://xxx/xx?a=1&b=2

//POST请求:
http://xxx/xx
body:{
	a:1,
	b:2
}

GET请求有长度上限的本质原因是因为GET的参数一般约定俗成放在URL的query中,而又因为URL的长度有上限,因此得出了这个结论。

关于URL的长度,HTTP没有对GET和POST做过多的限制,只是浏览器和服务端的不同分别做了不同程度的限制而已,例如IE浏览器限制在2048个字符,谷歌浏览器限制在2M个,其他浏览器也有相应的规定。

为什么要做限制?

原因是服务端解析一个字符串时,需要分配内存,而URL必须作为一个整体去看待,无法将它分块处理,于是必须预先分配一块足够大的内存来存储URL,如果URL太长或并发量高的话,就有可能会挤爆服务器的内存。这个才是GET请求有上限的底层原因!

最后就是POST并没有比GET安全

常常可以看到有人说POST请求比GET请求更加安全,其实是错误的,正如前面所说,可以了解到GET POST本质上并无区别,只是约定的规范而已,大家只是更倾向于把GET请求的参数放在query中,POST请求的参数放到body上,这样相对于GET请求的参数直接放到了URL上,如果带有密码或隐私信息,直观上看的确显得不安全,但其实对于网络安全的角度而言,query和body上的参数都是明文的,HTTP本身就是不安全的协议,请求在任何一个网络节点被劫持,内容对于劫持的人来说都是透明的,GET和POST只是请求方式的不同,本身并不对安全起任何作用。真正要做到安全需要双端加密,如HTTPS双端加密后,即使在任何网络节点截取到了包也截取不了内容,这才是本质上的安全。

在这里插入图片描述

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值