HTTP协议2|青训营

76 阅读3分钟

场景分析-静态资源

静态资源方案:

缓存+CDN+文件名hash

CDN

(内容分发网络): 指的是一组分布在各个地区的服务器。这些服务器存储着数据的副本,因此服务器可以根据哪些服务器与用户距离最近,来满足数据的请求。CDNs 提供快速服务,较少受高流量影响。

CDNs 被广泛用于传输 stylesheets 和 JavaScript 等静态资源,像 Bootstrap,Jquery 等。对这些库文件使用 CDN 技术,有以下几点好处:

  • 通过 CDN 向用户分发传输相关库的静态资源文件,可以降低我们自身服务器的请求压力。
  • 大多数 CDN 在全球都有服务器,所以 CDNs 上的服务器在地理位置上可能比你自己的服务器更接近你的用户。地理距离会按比例影响延迟。
  • CDNs 已经配置了恰当的缓存设置。使用 CDN 节省了在你的服务器中对静态资源文件的配置。

场景分析-登录

账号密码登录:

打开工作台-network-勾选preserve log-过滤quick_login-有不同的method

  1. 向什么地址做了什么动作?
    使用POST方法

    目标域名https : //sso.toutiao.com·目标path /quick_login/v2/

  2. 携带了哪些信息,返回了哪些信息

    携带信息

    **** Post body,数据格式为form·希望获取的数据格式为json·已有的cookie

    返回信息

    数据格式json 种cookie的信息

  3. 把登录信息到其他页面上进行

    SSO:单点登录(Single Sign On)

场景分析-跨域

跨域的判定

234.png

port被省略可以

跨域

CORS (Cross-Origin Resource Sharing )

预请求︰获知服务端是否允许该跨源请求(复杂请求)

相关协议头

  • Access-Control-Allow-Origin
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age
  • Access-Control-Allow-Credentials.
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers
  • Access-Control-Request-Method
  • Access-Control-Request-Headers.
  • origin
跨域解决方案
  • CORS
  • 代理服务器
  • 同源策略是浏览器的安全策略,不是HTTP的
  • lframe

实战

浏览器篇

AJAX之XHR

XHR:XMLHttpRequest

readyState
  • 0:UNSENT 代理被创建,但尚未调用open()方法。
  • 1:OPENED open()方法已经被调用。
  • 2:HEADERSRECEIVED send()方法已经被调用, 并且头部和状态已经可获得。
  • 3:LOADING 下载中;responseText属性已经包含部分数据。
  • 4:DONE 下载操作已完成。
AJAX之Fetch
  • XMLHttpRequet的升级版
  • 使用Promise 模块化设计,Response,Request,Header对象
  • 通过数据流处理对象,支持分块读取

node篇

标准库︰HTTP/HTTPS
  • 默认模块,无需安装其他依赖
  • 功能有限/不是十分友好
常用的请求库:axios
  • 支持浏览器、nodejs环境
  • 丰富的拦截器

用户体验

网络优化

B56V3Z3$GI`)U0HYYRS(~BP.png

稳定性

123.png

扩展-通信方式

webSocket

  • 浏览器与服务器进行全双工通讯的网络技 术
  • 典型场景∶实时性要求高,例如聊天室
  • URL使用ws://或wss://等开头
QUIC: Quick UDP Internet Connection
  • 0-RTT建联(首次建联除外)
  • 类似TCP的可靠传输。
  • 类似TLS的加密传输,支持完美前向安全。用户空间的拥塞控制,最新的BBR算法。
  • 支持h2的基于流的多路复用,但没有TCP的HOL问题。
  • 前向纠错FEC。
  • 类似MPTCP的Connection migration。