get和post请求的区别
get和post请求的区别有:安全性不同、编码类型(enctype 属性)不同、表单数据长度不同、添加书签不同、数据可变大小、缓存不同、主要作用不同、能见度不同、发送的数据数量不同、可用性不同,此外,post请求比get请求安全。
1、安全性不同
get请求:GET 方法发送的数据不受保护,因为数据在 URL 栏中公开,它以明文形式保存在浏览器历史记录和服务器日志中,这增加了漏洞和黑客攻击的风险。
post请求:POST 方法发送的数据是安全的,因为数据未在 URL 栏中公开,参数不会存储在浏览器历史记录或 Web 服务器日志中,还可以在其中使用多种编码技术,这使其具有弹性。
2、编码类型(enctype 属性)不同
get请求:application/x-www-form-urlencoded。在表单中使用 GET 方法时,数据类型中只接受 ASCII 字符。
post请求:multipart/form-data or application/x-www-form-urlencoded 对二进制数据使用多部分编码。在表单提交时,POST 方法不绑定表单数据类型,并允许二进制和 ASCII 字符。
3、表单数据长度不同
get请求:表单数据位于 URL 中,并且 URL 长度受到限制。安全 URL 长度限制通常为 2048 个字符,但因浏览器和 Web 服务器而异。
post请求:无限制。
4、添加书签不同
get请求:GET 查询的结果可以加入书签中,因为它以 URL 的形式存在。
post请求:POST 查询的结果无法加入书签中。
5、数据可变大小
get请求:GET 方法中的可变大小约为 2000 个字符。
post请求:POST 方法最多允许 8 Mb 的可变大小。
6、缓存不同
get请求:GET 方法的数据是可缓存的。
post请求:POST 方法的数据是无法缓存的。
7、主要作用不同
get请求:GET 方法主要用于获取信息。
post请求:POST 方法主要用于更新数据。
8、能见度不同
get请求:GET方法对每个人都是可见的(它将显示在浏览器的地址栏中),并且对要发送的信息量有限制。
post请求:POST 方法变量不会显示在 URL 中。
9、发送的数据数量不同
get请求:在 GET 中,只能发送有限数量的数据,因为数据是在 URL 中发送的。
post请求:在 POST 中,可以发送大量的数据,因为数据是在正文主体中发送的。
10、可用性不同
get请求:发送密码或其他敏感信息时,不应使用 GET 方法。
post请求:发送密码或其他敏感信息时应使用 POST 方法。
拓展阅读
post请求的过程
- 浏览器请求tcp连接(第一次握手)
- 服务器答应进行tcp连接(第二次握手)
- 浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
- 服务器返回100 Continue响应
- 浏览器发送数据
- 服务器返回200 OK响应
get请求的过程
- 浏览器请求tcp连接(第一次握手)
- 服务器答应进行tcp连接(第二次握手)
- 浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
- 服务器返回200 OK响应