get和post请求的区别及优缺点

更新时间:02-09 教程 由 白满川 分享

get和post请求的区别及优缺点?

首先GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

一般来说,我们会从三个点回答

1、GET把参数包含在URL中,POST通过request body传递参数。所以相比GET,POST要更加安全

2、数据库层面GET具有幂等性和安全性,POST不符合

3、其他层面:GET可以被缓存、被存储,而POST不行

但是很可惜,这不是面试官想要的答案?来吧,solo一波把。真正想要的回答是个啥玩意。

回归本质,其实GET和POST是HTTP协议中的两种发送请求的方法。

那么HTTP是什么?

HTTP是基于tcp/IP的关于数据如何在万维网中如何通信的协议。

HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。

那么,“标准答案”里的那些区别是怎么回事?

GET和POST本质上就是TCP链接,并无差别。但是由于HTTP的规定和浏览器/服务器的限制,导致他们在应用过程中体现出一些不同。 GET和POST的重大区别,简单的说:

GET产生一个TCP数据包;POST产生两个TCP数据包。详细来说见如下过程:

post请求的过程:

(1)浏览器请求tcp连接(第一次握手)

(2)服务器答应进行tcp连接(第二次握手)

(3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

(4)服务器返回100 Continue响应

(5)浏览器发送数据

(6)服务器返回200 OK响应

get请求的过程:

(1)浏览器请求tcp连接(第一次握手)

(2)服务器答应进行tcp连接(第二次握手)

(3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)

(4)服务器返回200 OK响应

也就是说,目测get的总耗是post的2/3左右,这个口说无凭,网上已经有网友进行过测试。

所以这才是GET比POST更快的根本原因,但是再网速情况好的时候可以忽略不记,但是差的时候就可以体现出来了。

那么回答的标准答案可以怎么说呢:

(1)post更安全(不会作为url的一部分,不会被缓存、保存在服务器日志、以及浏览器浏览记录中)

(2)post发送的数据更大(get有url长度限制)

(3)post能发送更多的数据类型(get只能发送ASCII字符)

(4)post比get慢,get和post请求的过程中GET产生一个TCP数据包;POST产生两个TCP数据包。

(5)post用于修改和写入数据,get一般用于搜索排序和筛选之类的操作(淘宝,支付宝的搜索查询都是get提交),目的是资源的获取,读取数据,而post用来提交数据。所以GET具有幂等性和安全性,POST不符合

声明:关于《get和post请求的区别及优缺点》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2293109.html