关于HTTP请求中的 GET和POST 区别

本文详细探讨了HTTP请求中GET和POST的区别,包括参数传递方式、缓存处理、数据类型限制以及TCP数据包发送的不同。GET请求通常用于获取资源且可被缓存,而POST用于提交数据且不受URL长度限制。在TCP连接中,POST请求会先发送header再发送data,可能在某些网络环境下导致效率稍低。
摘要由CSDN通过智能技术生成
  1. GET和POST是HTTP请求的两种基本方法,最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。当然这个区别其实可以直接忽略掉,因为本质上 GET和post都是基于Http的TCP/IP协议请求,意思就是 你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。
  2. 虽然 get也可以加入request body,但是由于不同服务器的处理方式不同,有些服务器会接受的这些数据,读出数据,有些服务器直接忽略,所以,虽然GET可以带request body,也不能保证一定能被接收到哦
  3. GET请求会被浏览器主动cache 缓存,而POST不会,除非手动设置。这种情况下 get的二次请求会比post请求更快些,因为get请求会把一些图片资源或者html资源放入缓存中,所以二次请求更快,而post请求会每次都会请求一次,这样比较一下,get更快
  4. 对参数的数据类型,GET只接受ASCII字符,而POST没有限制。 现在不成文的规定是 浏览器通常都会限制url长度在2K个字节,而(大多数)服务器最多处理64K大小的url。超过的部分恕不处理
  5. GET和POST还有一个重大区别: GET产生一个TCP数据包;POST产生两个TCP数据包。长的说:对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。也就是说,GET只需要汽车跑一趟就把货送到了,而POST得跑两趟,第一趟,先去和服务器打个招呼“嗨,我等下要送一批货来,你们打开门迎接我”,然后再回头把货送过去。因为POST需要两步,时间上消耗的要多一点,看起来GET比POST更有效
  6. 据研究,在网络环境好的情况下,发一次包的时间和发两次包的时间差别基本可以无视。而在网络环境差的情况下,两次包的TCP在验证数据包完整性上,有非常大的优点。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值