目录
- 关于http请求方法get和post的区别
- 真正区别
- 存在问题的区别
关于http请求方法get和post的区别
真正区别
实际上二者差异不大,在http里面,使用get的场景,使用post也可以;同样,使用post的场景,使用get也可以
但是从使用习惯上来说,还是存在区别的
(1)首先这两个方法在最初定义的时候,就规定了不同的语义
GET方法从语义上来说通常是用来 “获取数据”
POST从语义上来说通常是"提交数据"
(2)GET方法传递传输的时候,通常不会使用报文里面的body,而是使用url里面的query string
而post通常直接使用body
(3)服务器对于GET方法的请求,通常认为是"幂等的"
对于POST则没有这个要求
这个要求是 http官方文档给的建议
所谓"幂等性"是指在计算系统中,对同一个操作的多次执行所产生的结果与执行一次的结果相同。在网络通信中,HTTP方法的幂等性是指无论调用多少次,结果都是相同的。
存在问题的区别
(1)post比get更加安全???(×)
论据是 使用get请求,登录的时候将 密码直接显示在浏览器地址栏,不安全
实际上,对应post请求一样也不安全,放到body里面,被抓包了,一样是不安全的
实际上,安不安全,是取决于加密的
(2)get传输的数据量有限,而post传输的数据量比较长,没有限制??? (×)
实际上,在http标准中,明确说了一句话就是,针对get的URL长度是没有限制的
有这样的观点是因为,在很久以前的IE浏览器,对于URL的长度做出了限制(URL长度超过一定的数值,就会请求失败)
(3)get只能传输文本数据,post可以传输二进制数据??? (×)
实际上,在url的query string 提供了urlencode机制,二进制数据,通过转义,也是可以进行传输的
虽然post可以直接传输二进制,但是很多时候,也是通过 转义之后,以文本的方式来传输的