2019-08-11 HTTP及Chrome机制

调试工具

curl

HTTP/TCP

  1. 同一个域名同时最多只能建立 6 个 TCP 连接,如果在同一个域名下同时有 10 个请求发生,那么其中 4 个请求会进入排队等待状态,直至进行中的请求完成。
  2. cookies 存储在浏览器(客户端)上,通过HTTP的请求头传输给服务器


    2019-08-11 HTTP及Chrome机制_第1张图片
    HTTP请求示意图

断开连接

通常情况下,一旦服务器向客户端返回了请求数据,它就要关闭 TCP 连接。不过如果浏览器或者服务器在其头信息中加入了:
Connection:Keep-Alive
那么 TCP 连接在发送后将仍然保持打开状态,这样浏览器就可以继续通过同一个 TCP 连接发送请求。保持 TCP 连接可以省去下次请求时需要建立连接的时间,提升资源加载速度。比如,一个 Web 页面中内嵌的图片就都来自同一个 Web 站点,如果初始化了一个持久连接,你就可以复用该连接,以请求其他资源,而不需要重新再建立新的 TCP 连接。

重定向

状态码:301
响应头字段:location
告诉浏览器,我需要重定向到另外一个网址,而需要重定向的网址正是包含在响应头的 Location 字段中,接下来,浏览器获取 Location 字段中的地址,并使用该地址重新导航,这就是一个完整重定向的执行流程。

//响应行
HTTP/1.1 301 Moved Permanently   
//响应头
Date: Thu,08 Aug 2019 00:55:44 GMT 
Content-Type: text/html 
Content-Length:178
Connection: keep-alive 
Location: https://www. geekbang. org/
Strict-Transport-Security: max-age=15768000

浏览器缓存机制

  1. DNS缓存
  2. 页面资源缓存
    通过响应头字段Cache-Control来设置是否缓存,其下的Max-age参数来设置存活时长(秒)
    响应头:
    Cache-Control:Max-age=2000
    存活时间内不再向服务器请求,直接调用本地的缓存,超过存活时间就进行重新请求,并在请求头中加入If-None-Match字段,服务器收到请求后,通过其值判断资源是否有更新
    请求头:
    If-None-Match:"4f80f-13c-3a1xb12a"
  • 如果没有更新,就返回 304 状态码,相当于服务器 告诉浏览器:“这个缓存可以继续使用,这次就不重复发送数据给你了。”
  • 如果资源有更新,服务器就直接返回最新资源给浏览器。


    2019-08-11 HTTP及Chrome机制_第2张图片

SESSION/COOKIE

以登录为例

  1. 浏览器向服务器提交请求,账号密码保存在请求体中
  2. 服务器收到请求,验证之后存入SESSION,返回响应,SESSION_ID存在响应头中的SET-COOKIE字段中UID参数中
  3. 浏览器收到响应,将SET-COOKIE字段中的参数存入本地COOKIE中,之后每次请求服务器都将自身的COOKIE进入提交,其中包括从服务器得到的UID参数,服务器通过UID/SESSION_ID就能访问为对应浏览器存储的SESSION

你可能感兴趣的:(2019-08-11 HTTP及Chrome机制)