大家好,我是山茶,一个探索AI + 测试的程序员
在网上看到了许多关于post与get之间区别的帖子,也有很多帖子是直接粘贴复制的,甚至连标题、符号都没改,甚至还有很多争议
一、post、get
关于post与get之间区别,老生长谈的内容,在这里我不再赘述,这篇内容仅表达我对post与get之间区别的理解
get与post是HTTP协议接口请求中的两种请求方法,他们的不同主要源头是为了遵守HTTP协议规范。可以百度一下,查看对应的接口类型
GET 方法请求接口
POST 方法请求接口
二、post、get常见区别
HTTP协议是在TCP/IP协议簇中的,且HTTP协议底层的本质是TCP协议原理
所以,用一句话形容,get与post的区别 "是TCP传输的区别,get请求的前三个字节转为字符是get,post前4个字节转为字符是post,其他区别都是传输规范"
从使用角度,最直观的区别
-
大多数get方法,请求参数直接填写在url中发送。POST方法请求参数使用body request方式发送
从使用安全角度
-
post 方法与 get 方法都不算安全,都是明文发送请求。但,相较而言 get 更容易被 hacker 获取数据内容
从发送数据长度角度
-
方法请求本身是没有请求长度限制的,但请求url及不同的浏览器对于请求长度的限制都是不同的
-
get 请求最多能够发送 2k 长度的字符串,且因为参数跟在 url 后面,作为 url 的一部分仅支持字符串类型
-
post 请求则发送数据长度不限制,且类型也不做限制
从数据缓存角度、刷新与回退动作
-
请求本身是不存在缓存数据的,但浏览器是可存储缓存数据的。
不同方法使用场景不同,所以,应用在编写时会被设计缓存的机制,get 方法请求就是如此,浏览器会自动存储 get 数据以供下次查询使用,然而 post类型数据因场景不同,数据通常不被缓存
因此,在浏览器刷新和回退时,get 方法仅是获取浏览器缓存数据即可,而 post 则是需要像服务端重新发送请求
上面的几点是我对于post、get区别的理解,还有几个区别像可见性这种,没有必要再讲一遍,毕竟这个可太明显能够看到不是
作者简介:
程序员山茶,一个工作5年,并坚持探索测试之路的测试开发工程师。曾混迹于互联网大厂、IOTA行业领航企业、安全行业、大数据行业领航企业,欢迎和我一起沟通交流。
欢迎关注我, 和我一起探索AI+测试之路,终身成长