# 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是幂等的(无论请求多少次,每次的结果都是一样的)
最后一次修改时间: 9/28/2020, 11:37:23 AM