post请求返回500_面试必问GET和POST的区别

2304ea63b7b314e07548fbb737c6896d.png

GET和POST的区别

这个问题很基础,但是很多小伙伴都回答不到根本上。一般在面试初级和中级开发工程师的时候,这个问题是必问的问题,高级工程师问到的概率是特别大,但是也容易问到。下面我就给大家讲讲如何完美回答这个问题。

GET和POST属于一种请求方式,既然是请求方式,那么就有对应的请求报文,我们先来说说他们两个在请求报文上的区别:

1.请求报文的区别

对于一个请求报文的结构如下:

90d2493e1b14a54a0419fe53d3b68879.png

请求报文的结构

GET请求报文的结构:

d8b8ab8557e0a0e4fd3b0274e033afbf.png

GET请求报文的结构

POST请求报文的结构:

1b74742c067e806e1201a0ffc2b35bfe.png

POST请求报文的结构

通过上面两个图的对比,我们很容易看出,GET和POST在请求报文上只是数据存放的位置不一样,GET是存放在URL中的,POST是存放在请求报文体中的。

希望小伙伴们还是记住这个请求报文的结构,对你深入理解请求的过程非常有帮助。

2.TCP数据包及浏览器请求响应的区别

GET请求,只产生一个数据包,当发送请求的时候,浏览器会把http header和data一并发送过去,服务器响应。

POST请求,产生两个TCP数据包,一个是http header数据包一个是data数据包。当发送请求的时候,浏览器先发送header数据包,服务器响应100 continue,浏览器再发送data数据包,服务器响应。

这是很多小伙伴们回答的时候都回答不上的点,同时也是面试官想要的答案之一,希望小伙伴们记住这一点。

3.回退影响

GET请求,回退的时候是没有影响

POST请求,回退的时候会再次提交请求

4.浏览器缓存

GET请求,请求返回的内容会被浏览器主动cache

POST请求,请求返回的内容不会主动cache,除非手动设置

5.编码方式

GET请求,只能进行URL编码

POST请求,支持多种编码方式

6.参数长度限制

GET请求,有参数长度限制

POST请求,没有参数长度限制

7.参数的数据类型

GET请求,只接受ASCII字符

POST请求,没有限制

8.URL地址被Bookmark(URL地址可以做书签收藏起来)

GET请求,可以

POST请求,不可以

9.效率

GET请求,效率相对较高(因为生成一个数据包,一次发送)

POST请求,效率相对较低,但是这个差别可以忽略(因为生成两个数据包,两次发送)

10.安全性

有很多小伙伴会回答GET的安全性比POST的安全性高,这是不对的。GET和POST都没有什么安全性可言。

get请求参数在url地址上,直接暴露

post请求的参数放body部分,按F12也直接暴露了,所以没啥安全性可言

相信大家看完这篇文章后,会对GET和POST的区别有了更加不一样的认识,希望大家能有所收获!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值