GET请求是一种HTTP方法,用于从服务器检索数据。它将请求的数据附加在URL后面,以查询字符串的形式出现。
POST请求也是一种HTTP方法,用于向服务器发送数据。它将数据存储在请求体中,不会出现在URL中。
相同点:GET请求和POST请求底层都是基于TCP/IP协议实现的,使用二者中的任意一个,都可以实现客户端和服务器端的双向交互。
不同点:1.定义:GET请求一般是获取数据,POST请求一般是提交数据。
2.安全性:GET请求,请求数据暴露在URL中;POST请求,数据存储在请求体中;相比之下POST请求更安全。(但从传输角度来讲,它们都不安全,HTTP是明文传输,如果在网络节点上抓包,就能完整地获取数据报文,安全传输可用HTTPS)
GET请求在地址栏后面以?的方式传参,多个参数之间用&分隔(也可以自己约定参数的写法)
POST请求是在Body以表单的方式传参。
3.数据量:GET请求数据量有限制,通常不超过2KB;POST请求数据量较大,没有大小限制。
4.适用范围:GET请求适合请求无状态操作,如页面跳转、检索数据等;POST请求适合请求有状态的操作,如表单提交、上传文件等。
5.幂等性:GET请求支持幂等性,即多次请求同一资源,结果相同;POST请求不支持幂等性,即多次请求同一资源,结果不同。
(幂等性:对于同一操作,无论是一次还是多次执行,产生的结果是一致的,不会因为多次执行而产生副作用)
6.编码类型:GET请求的编码类型为:application/x-www-form-urlencoded;POST请求的编码类型为:application/x-www-form-urlencoded 或 multipart/form-data。
(application/x-www-form-urlencoded是一种MIME类型,用于在HTTP请求中传输表单数据。当你在HTML表单中使用method属性为“post”时,浏览器就会默认使用这种编码方式来发送表单数据。
工作原理:application/x-www-form-urlencoded编码方式将表单数据按照键值对的形式进行编码,其中键和值都使用字符串表示。编码后的数据以“&”符号分隔不同的键值对,以“=”符号分隔键和值。最终,整个编码后的数据会被放在HTTP请求的body中发送给服务器。
例如:如果一个表单中有两个字段,分别为name和age,它们的值分别为Tom和25,那么经过application/x-www-form-urlencoded编码后,发送给服务器的数据将会是:name=Tom&age=25)
7.后退按钮/刷新:点击后退按钮/刷新时,GET请求无害,POST请求,数据会被重新提交。
8.书签:GET请求可被浏览器收藏为书签,而POST请求不能。
9.缓存:GET请求能被缓存,而POST请求不能。
10.历史:GET请求参数会被完整保留在浏览器历史中,而POST请求参数不会被保留在历史中。
11.数据类型:GET请求只允许ASCII字符,POST请求没有限制。
参考: