get和post的区别

  1. 两者的请求格式
    • http请求格式
      在这里插入图片描述
      说明:
      • 第一行,包括:请求方法,请求url,http版本(可略)
      • 第二行,头部信息,可以为0个或者多个,说明服务器要使用的附加信息
      • 第三行,空行,作为头部与报文实体分割
      • 第四行,报文实体的主体部分,任意数据组成的数据块
    • get请求实例
      在这里插入图片描述
    • post请求实例
      在这里插入图片描述
  2. 两者对比
    • 参数传输方式以及编码格式
      • get,请求的数据以querystring的格式附加在url后面。编码格式采用ASCII
      • post,请求数据放在请求body中,编码格式为unicode
    • 传输数据大小
      • get,url长度以及数据大小有限制
      • post,由于不是url传值,理论上无限制
        ps:http规范中,没有对url长度以及传输的数据大小进行限制,出现上述区别主要是因为浏览器以及服务器。实际中,服务器也会对post提交的数据进行限制
    • 产生的tcp数据包
      • get,产生一个,浏览器将http header以及data发送出去,服务器响应200
      • post,产生两个,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200
        ps:并非所有浏览器的post都会发送两次包,firefox就发送一次
    • 安全性
      • 从是否修改服务器资源上说
        • get,不修改服务器资源
        • post,修改服务器资源
      • 从参数而言
        • get,直接暴露参数
        • post,隐藏参数
          ps:最终的安全与否,视使用情况。例如http中定义get的方式用于读取资源,但实际开发中却使用了get的方式去修改资源,这样的情况,get被认为不安全对get而言是不公平的~
posted @ 2020-12-03 12:02  Eric-liang  阅读(81)  评论(0)    收藏  举报