http中get和post的区别及使用场景

http中get和post的区别及使用场景

区别

get和post是http协议中的两种请求方式,http是基于tcp/ip的协议。


按照约定:get方法的参数在URL中,post方法的参数在body中。


与post相比,get将参数暴露在URL上,安全性比较差,
其实从传输的角度来说,它们都是不安全的,因为http在网络上是以明文传输的,
只要在网络节点上抓包,就能获取完整的数据报文,要想安全传输,就只有加密。

但是get和post还有一个区别:
get产生一个tcp数据包,post产生两个数据包,
对于get请求,浏览器会把header和data一并发送出去,服务器响应200,
对于post请求,浏览器先发送header,服务器响应100(continue),然后再发送data,服务器响应200,
所以get执行效率会比post高,
不过在网络环境良好的情况下,区别不大。


http协议并没有URL长度的限制,这些是不同的浏览器或服务器做的。

使用场景

若符合下列任一情况,则用get方法:

请求是为了查找资源,html表单数据仅用来帮助搜索;
请求结果无持续性的副作用;
收集的数据及html表单内的字段名称总长度不超过1024个字符。


若符合下列任一情况,则用post方法:

请求结果有持续性的副作用,例如:数据库中添加新的数据行;
使用get方法可能会让URL过长;
要传送的数据不是采用7位的ASCII编码。



在一些框架中,会根据请求方式是get或者post来区别重试机制,
还有接口一些幂等性的设计等,所以规范还是遵守一些的好。

不当之处,请予指正。

参考资料:

在途中#GET和POST两种基本请求方法的区别
程淇铭都9102年了,还问GET和POST的区别
奔跑小王子什么时候用GET?什么时候用POST?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值