GET 和 POST 的区别


  • 应用场景
    • GET: 幂等的, 不会影响服务器资源, 比如请求网页资源
    • POST: 非幂等的, 会影响服务器资源, 比如注册用户
  • 缓存
    • GET: 默认会缓存, 除非请求头或响应头指定不缓存
    • POST: 默认不缓存也不推荐缓存, 因为会影响服务器资源导致数据不一致
  • 报文实体
    • GET: 报文实体为空
    • POST: 报文实体为向服务器发送的数据
  • 安全性
    • GET: 相对不安全, 因为请求数据暴露在 URL 中形成历史记录
    • POST: 相对安全, 虽然也是明文传输但请求数据不会暴露在 URL 中形成历史记录
  • 请求数据量
    • GET: URL 长度受浏览器限制, 进而影响请求数据量
    • POST: 请求数据量不受限制, 因此适合文件上传或复杂的表单数据
  • 参数类型
    • GET: 只能以键值对字符串形式
    • POST: 支持更多类型