GET和POST究竟有啥不同呢?

GET和POST究竟有啥不同呢?_第1张图片

GET和POST究竟有啥不同呢?

前提

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q69YRqTB-1605788309176)(img-20201119195346585.png)]

1.当输入url之后,按下回车键发生了哪些动作?

  1. 当浏览器输入url,先解析url地址是否合法.
  2. 浏览器检查是否存在缓存(浏览器缓存-系统缓存-路由器缓存),如果缓存都没有,看第三步.
  3. 发起Http请求前,需要进行域名解析(DNS解析),发送请求数据包.
  4. 发起TCP连接,经过三次握手.
  5. 握手成功,浏览器向服务器Http请求数据包.
  6. 服务器收到请求后,将数据返回给浏览器
  7. 浏览器接收到返回的的响应.
  8. 浏览器解析响应.如果响应可以存入缓存,则存入缓存.
  9. 浏览器发送请求获取嵌入在HTML中的资源(html、css、js、image等)
  10. 页面加载异步请求
  11. 页面的渲染—全部结束

2.GET和POST

  1. GET请求的参数通过URL传递的,POST请求的参数会放在请求体中
  2. GET请求比POST请求更不安全,因为参数直接暴露在URL中,所以GET请求不能够用来传递敏感信息
  3. GET请求在url中传递的参数有长度的限制的(在HTTP协议中并没有对url的长度进行限制,限制是在特定的浏览器以及服务器对它的限制,不同的浏览器限制的长度都不同。),POST没有。
  4. GET请求参数hi完整的保留在浏览器的历史记录中,POST请求的参数不会保留。
  5. GET请求进行url编码(百分号编码),POST请求支持多种编码方式.
  6. GET请求产生的URL地址是可以被bookmarks(存书签),POST请求不可以.
  7. GET请求在浏览器回退的时候是无害的,POST请求会再次提交数据.
  8. GET请求再浏览器中可以被主动cache,而POST请求不会,可以手动设置.

深入:

  1. GET和POST本质上没有什么区别

  2. GET和POST是什么

    Http协议中的两种发送请求的方法,本质都是在进行TCP连接.

  3. GET和POST有一个重大的区别:

    • 简单来说:GET产生一个TCP数据包,POST产生TCP数据包

    • 复杂的说:

      • 对于GET方式的请求,浏览器会把Http header和data一起发送出去,服务器返回200 OK.
      • 对于POST请求,浏览器先发送header,服务器响应100(已经收到请求的第一部分,正在等待其余部分),浏览器在发送data,服务器返回200 OK.
  4. 是不是POST请求需求两部,时间上消耗会比GET请求更多? 答:不是

    1. GET请求和POST请求都有自己的语义,不能随便混用.
    2. 在网络环境好的情况下,发送一次包的时间和发送两次包的时间差别可以无视,在网络环境差的情况下,发送两次包的TCP在校验数据完整性上,有很大的优势.
    3. 并不是所有浏览器都会在POST请求中发送两次包.比如:火狐

你可能感兴趣的:(python前端,post)