区别一:幂等性
幂等即一个操作的任意多次执行产生的影响均与一次执行的影响相同
由于 GET 是读,POST 是写,所以:
- GET 是幂等的,POST 不是幂等的;
- 用浏览器打开网页会发送 GET 请求,想用 POST 打开网页要用 form 标签;
- GET 打开的页面刷新是无害的,POST 打开的页面刷新需要确认;
- GET 结果会被缓存,POST 结果不会被缓存;
- GET 打开的页面可被书签收藏,POST 打开的不行。
区别二:请求参数
- 通常,GET 请求参数放在 URL 里,POST 请求数据放在 body (消息体)里;(不成文的规定,可以打破)
- GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息;
- GET 请求参数放在 URL 里是有长度限制的(其实是浏览器/服务器做出的限制),而 POST 放在 body 里没有长度限制(其实一般都会配置限制)。
区别三:TCP packet
- GET 产生一个 TCP 数据包;POST 产生两个或以上TCP 数据包。
根据技术规格文档,GET 和 POST 最大的区别是语义。但面试时一般问的是实践过程中二者的区别,所以你需要了解服务器和浏览器对 GET 和 POST 的常见实现方法。