GET和POST请求的区别?

首先要明确的是,GET和POST没有本质上的区别

究其原因其实很简单,因为他们底层都是TCP,只不过HTTP作为应用层协议规定了一些标准,比如GET要URL中传递参数,POST要把参数放在request body里,所以当然可以不按标准,在GET请求的request body里、POST请求的URL中塞参数,只不过是不符合标准,server给出的响应不一定符合你的预期就是了(有些可能会解析,有些可能会直接忽略)。至于传输参数的大小限制,则是完全取决于实现者(见下面第2条)。

1、GET请求的参数通过URL传递,POST的则放在request body中。

2、GET请求在URL中传递的参数是有长度限制的(具体的长度限制是由浏览器决定的,不同浏览器可能存在差异,RFC标准中倒是没有规定),而POST的request body不受URL长度限制(由服务器决定)。

3、GET比POST更不安全,因为参数直接暴露在URL中,所以不能用来传递敏感信息。

4、GET请求只能进行URL编码,而POST支持多种编码方式,比如表单数据(multipart/form-data)、文本数据(text/plain)等。

5、GET请求浏览器会主动cache,而POST不会(除非手动设置)。

6、GET请求参数会被完整保留在浏览历史记录里,而POST中的参数不会被保留。

7、GET产生1个TCP数据包;POST可能产生2个TCP数据包。对于GET方式的请求,浏览器会把HTTP header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据),而这也分浏览器,比如Firefox就是1个包。2个包的优点是在网络条件差的时候可以验证数据包的完整性,而缺点则是比较花时间、效率比较低、性能略差些(不过在网络条件好的时候完全可以忽略不计),毕竟是两个RTT。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值