GET和POST区别总结

HTTP中的get和post的区别?Get提交数据的长度限制是多少?

一般来说GET是获取数据,POST是提交数据的,并且GET和POST都是HTTP方法,HTTP有事基于TCP/IP的关于数据再万维网中通信的协议。从本质上讲,GET和POST都是HTTP请求,TCP连接

一. 区别

  1. GET是 获取数据,POST是用来提交数据的

GET方法通常用于请求服务器发送某个资源,应该是安全和幂等的。(什么是幂等)

仅仅获取资源信息,就像数据库查询一样,不会修改和增加数据,不会影响资源的状态。

安全和幂等:

  • 安全是指GET操作只是用来获取信息而非修改信息。
  • 幂等表示对同一个URL资源的请求应该返回同样的结果。

POST方法向服务器提交数据,将数据提交给服务器处理。POST是向服务器传输数据,数据会被重新提交,所以就会对原有的数据造成伤害,向指定资源提交数据进行处理(例如提交表单或是上传文件)数据包含在请求体中,POST请求可能导致新的资源的建立或者是对已有资源的修改。

  1. 参数的位置: GET请求的参数位于URL中,而POST请求的参数位于request body (请求体)中

GET请求的安全性不如POST请求

GET请求的参数有长度限制,而POST请求没有

GET参数只允许ASCII字符,POST则没有限制

  • GET方式通过在URL上提交数据,数据在URL中可以看到;POST方式数据放置在请求体中提交。使用GET时,参数会显示在地址栏上,而POST不会。因此如果这些数据是中文数据并且非敏感,那么使用GET;如果用户输入的数据不是中文字符而且包含敏感数据,使用POST为好
  • HTTP协议没有对GET和POST的长度做限制,GET的最大长度限制是因为浏览器和Web服务器限制了URL的长度,不同的浏览器的限制长度也是不同的,比如IE是2083字节。
  • 理论上来说POST的长度是没有限制的,但是受服务器的配置限制或者内存大小的限制,造成实际开发中POST也是有数据长度限制的
  1. 为什么GET请求比POST请求更快

​ 1.POST请求包含更多的请求头
​ 因为POST需要在请求的body部分包含数据,所以会多了几个数据描述部分的首部字段(如:content-type),这其实是微乎其微的。

​ 2.最重要的一条,POST在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据

POST请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送post请求头(第三次握手)
(4)服务器返回100 Continue响应
(5)浏览器发送数据
(6)服务器返回200 OK响应
GET请求的过程:
(1)浏览器请求tcp连接(第一次握手)
(2)服务器答应进行tcp连接(第二次握手)
(3)浏览器确认,并发送get请求头和数据(第三次握手)
(4)服务器返回200 OK响应

​ 3. GET会将数据缓存起来,而POST不会 (GET在浏览器回退时是无害的,而POST会再次提交请求。GET会将请求参数放在请求的url中,回退操作实际上浏览器会从之前的缓存中拿结果;POST每次调用都会创建新的资源。)

   4. POST不能进行管道化传输

二. 对比

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ef1zecZR-1668992974753)(C:\Users\50321\AppData\Roaming\Typora\typora-user-images\image-20221031103649440.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值