前端面试题:get和post的区别?

上来就直接说get是用来拿数据的,post是用来给后端传数据的?

面试官直摇头!

你说: 二者没有本质区别! 面试官虎躯一震,愿闻其详!

get和post都是HTTP的请求方式,二者都属于TCP/IP(传输控制/网络)协议,二者没有本质区别。

以前说get的参数挂在url上面,post的参数放在request body中。其实呐,交换二者的传参方式也是可行的。

那为啥实际就不行呢?

1. HTTP为了区别二者,规定get传递参数在url上面,post把参数放在request body中,这也导致get比post更不安全,因为,参数暴露。

2. 因为不同的浏览器和服务器为了减少数据量的负担,大多限制了url长度在2kb左右,忽略get请求的request body 中携带的数据。

脱离浏览器环境,在node环境中请求,二者就可以随便来!!!

另外的不同点,get请求会把http header和data一并发送出去,服务器响应200; 而post是先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200,故:get产生一个TCP数据包,post产生两个TCP数据包,在网络环境差的情况下,两次验证的完整性更有优势。

其他的不同点:

1. get在浏览器回退无害,post会再次请求

2. get的url可以加入标签,post不行

3. get会被浏览器主动cache(缓存),post需要手动设置

4. get只能url编码,post花样多

5. get参数会被记录在浏览器历史记录,post不会保留

6. get只传递ASCII字符,post可携带各种

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值