Get 和 Post的区别
标准式的答案
GET 用于获取信息,是无副作用的,是幂等的,且可缓存的。 POST 用于修改服务器上的数据,有副作用,非幂等的,且不可缓存。
| 分类 | GET | POST |
| 浏览器后退/刷新 | 无影响 | 数据会被重新提交 |
| 缓存 | 会被浏览器缓存 | 不会缓存 |
| 书签 | 可以被存为书签 | 不能 |
| 编码类型 | application/x-www-form-urlencoded | application/x-www-form-urlencoded或multipart/form-data |
| 长度限制 | URL的长度受限制(最大长度2048字符)。并不是HTTP协议对长度的限制,而是浏览器和服务器对url长度的限制 | 无 |
| 类型限制 | 只允许ASCII字符 | 无,且允许二进制 |
| 安全性 | 相对于POST,安全性较差 | 较为安全。参数不会被保存在浏览器历史或web服务器日志中 |
真实的区别
- 报文格式不同,
GET请求参数在url上,而POST请求参数在body中。
- 请求行:包含请求方法,URI、HTTP版本信息。(无参数时,请求行主要是请求方法不一样,其他的都是一样的)
- 从传输角度上,它们都是明文传输,都可被抓包获取数据报文,它们都是不安全的,要安全的话只有加密,即
HTTPS。 POST会产生两个TCP数据包,是部分浏览器的情况,不是POST请求必然行为(先发送header,再发送body)。 GET是幂等的(无论请求多少次,每次的结果都是一样的)