http请求 get 和 post 的区别

  GET和POST是HTTP请求的两种基本方法。

  浏览器用GET请求来获取一个html页面/图片/css/js等资源;用POST来提交一个<form>表单,并得到一个结果的网页。

区别 get post
发送数据长度 在URL中传送的参数是有长度限制 一般被默认为不受限制
发送数据类型 只能发送ASCII字符 没有限制
速度
安全性
编码 只能进行url编码 支持多种编码方式

  1. 为什么get比post快?

    1.1 post在请求的body部分包含数据,请求头字段更多

    1.2 get产生一个TCP数据包,post产生两个TCP数据包

      post 在真正接收数据之前会先将请求头发送给服务器进行确认,然后才真正发送数据。

      post请求的过程:
      (1)浏览器请求tcp连接(第一次握手)
      (2)服务器答应进行tcp连接(第二次握手)
      (3)浏览器确认,并发送post请求头(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
      (4)服务器返回100 Continue响应
      (5)浏览器发送数据
      (6)服务器返回200 OK响应
      get请求的过程:
      (1)浏览器请求tcp连接(第一次握手)
      (2)服务器答应进行tcp连接(第二次握手)
      (3)浏览器确认,并发送get请求头和数据(第三次握手,这个报文比较小,所以http会在此时进行第一次数据发送)
      (4)服务器返回200 OK响应

  

  2. 为什么get 的安全性比 post 低?

    2.1  get 参数通过 url 明文传递,post 则放在 request body 中

    2.2  get 参数会被完整保留在浏览器历史记录里,post 不会

    2.3  get 会被浏览器主动缓存,post 不会

    2.4  get 会被保存在服务器日志,post 不会

posted @ 2021-04-02 14:34  zjcfrancis  阅读(132)  评论(0编辑  收藏  举报