GET请求与POST请求的区别

GET和POST是什么?

是HTTP协议中的两种发送请求的方法。

HTTP是什么?

HTTP是基于TCP/IP协议的用于保证数据在万维网中通信的协议。

HTTP数据传输规范:

为了保证数据传输的准确性和高效性:HTTP规定了GET、POST、PUT、DELETE等服务类别,对每个类别做了不同的规范。

**GET:HTTP规定将method设置为GET,并将传输的数据存放在URL中。
**POST:HTTP规定将method设置为POST,并将传输的数据存放在request body中。

注意:为什么不这样做呢?

由此来看GET和POST的底层是TCP/IP协议,都是TCP连接。也就是说如果我们给GET加上request body;给POST加上URL参数从技术上来讲是行的通的。

为什么不这样做呢?
答:
1. 数据的传输需要载体,而浏览器充当了这一角色;不同浏览器的对url的长度限制有差异(一般为2k个字节)。
*(POST一般用于提交数据,如果将数据存放到URL中超出了2k的,就会出现未知的问题)
2. 数据的接收需要平台,服务器充当了这一角色;对于请求的处理方式以及可处理的URL的大小有差异。
*(对于GET请求在request body中传递参数的情况,有的服务器会解析数据,有的服务器不做处理,此时就会出错)

总结:

POST和GET本质上是TCP连接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制导致二者在使用中出现了一些差别。

补充:(一个不常被提及的区别)

GET产生一个TCP数据包;POST产生两个TCP数据包。

**对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);

**对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值