get 和 post 请求有哪些区别?

2019-09-22  

 1、从主流浏览器的实现角度看

  GET POST
后退按钮/刷新 无害 数据会被重新提交(浏览器应该告知用户数据会被重新提交)
书签 可收藏为书签 不可收藏为书签
缓存 能被缓存 不能缓存
编码类型 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data
数据长度的限制 浏览器和 web 服务器限制了 URL 的长度,不同的浏览器和web服务器,限制的最大长度不一样,超出了最大长度,大部分的服务器直接截断,有些服务器会报 414 错误 无限制
安全性

参数在 url 中;浏览器记录访问历史 url

POST 的参数可以放到 Form Data 中,内行人拿到参数信息的难度,没太大差别;Form Data 中的参数不会保存在浏览器历史中

 

2、从 RFC 规范的(Safe-安全、Idempotent-幂等、Cacheable-可缓存性、语义)角度看 

  • GET 只读服务器数据不会修改;POST 表示可能修改变服务器上的资源的请求
  • GET 幂等,即每次请求结果和产生的影响都一样;POST 不幂等
  • GET 可缓存;POST 不可缓存

 

参考:

1、 https://www.zhihu.com/question/28586791

2、 https://www.cnblogs.com/hyddd/archive/2009/03/31/1426026.html

 

ConstXiong 备案号:苏ICP备16009629号-3