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(返回数据)。
GET 和 POSTHTTP 协议中常用的两种请求方法,主要有以下几点区别: 1. 参数位置不同 GET 请求的参数是在 URL 中以查询字符串的形式出现的,例如:http://www.example.com/page?param1=value1&param2=value2。 POST 请求的参数是在请求体中以键值对的形式出现的,例如:param1=value1&param2=value2。 2. 数据大小限制不同 GET 请求由于参数是在 URL 中传递的,所以受到 URL 长度的限制,不同的浏览器和服务器对 URL 长度的限制也不同,一般不建议在 GET 请求中传递大量的数据。 POST 请求由于参数是在请求体中传递的,所以不受 URL 长度的限制,但是服务器和客户端对请求体大小也有限制,一般情况下 POST 请求可以传递更大的数据。 3. 安全性不同 GET 请求中参数是以明文形式出现在 URL 中的,如果传递的参数包含敏感信息,那么这些信息可能会被拦截或者泄露,因此 GET 请求不适合传递敏感信息。 POST 请求中参数是在请求体中传递的,相对于 GET 请求POST 请求更加安全,因为请求体中的参数不会被直接显示在 URL 中。 4. 缓存处理不同 GET 请求默认会被浏览器缓存,如果请求相同的 URL,浏览器会直接从缓存中获取数据,不会重新请求服务器,这样可以减少网络流量,提高网站性能。 POST 请求不能被浏览器缓存,每次请求都会重新向服务器请求数据。 总的来说,GET 请求适合传递少量的非敏感信息,POST 请求适合传递大量的数据或者敏感信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值