现在回头看看自己以前学习get与post的区别,都是片面的,没有真正的理解get与post区别,现在觉得是应该更正一下自己的认知同时希望可以帮助学习接口测试的同学了解这个真相。
1、HTTP RFC文档定义两种请求:
get:用于信息获取,且应该是安全的和幂等的,它相当于我们在数据库中查询操作,不影响数据本身,幂等的含义简单说是发送get请求不改变返回数据的内容;
post:表示可能会修改服务器上资源的请求,它相当于我们在数据库中进行增删改操作;
2、get与post表现形式不同:
get请求数据会附在URL之后(放置在HTTP协议中),以“ ?”分割URL和传输数据,多个参数用&连接;
post请求数据放置HTTP包的body中,头消息与请求体中间空一行进行数据传输;
通用server nginx appache 默认不记录post body,因为http协议是无状态的
3、get请求没有对传输数据大小进行限制,也没有对URL长度进行限制,get取决于两部分:
a、HTTP客户端浏览器自己的限制,如IE,URL长度2083字节,opera长度4050
b、web服务器效率及安全考虑,所以修改Apache、IIS的配置对post提交大小进行限制
4、get安全性非常低,post安全性比较高,这个说法是错误的
在浏览器地址栏看不到并不能说明他安全,如果使用截数据包的工具查看没有加密过去的post请求,同样可以查看post报文内容。