HTTP 使用指南 | 青训营笔记

61 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天

初识 HTTP 协议

HTTP 协议的基本定义

  • 使用浏览器的过程 image.png
  • 网络请求 image.png
  • HTTP(Hyper Text Transfer Protocol)(超文本传输协议)

HTTP 协议主要特征

  • 应用层协议、基于TCP协议

  • 分为请求和相应

  • 简单可扩展

  • 无状态

    • 每个请求都是孤立的,不知道前一个信息

HTTP 协议发展历程

  • 历史 image.png

  • HTTP2 image.png image.png image.png

  • HTTPS image.png

HTTP 协议的报文结构

image.png image.png

  • 安全性(safe)

    • 不会修改服务器的数据的方法
    • GET HEAD OPTIONS
  • 幂等(idempotent)

    • 同样的请求执行一次和多次获得结果一致,服务器的状态一致,所有安全的方法都是幂等的
    • GET HEAD OPTIONS PUT DELETE
  • 状态码

    • 1xx
      • 指示信息,表示请求已接收,继续处理
    • 2xx
      • 成功,表示请求已被成功接收、理解、接受
      • 200 OK - 客服端请求成功
    • 3xx
      • 重定向,要完成请求必须进行更进一步的操作
      • 301 - 资源(网页等)被永久转移到其他URL
      • 302 - 临时跳转
    • 4xx
      • 客服端错误,请求有语法错误无法实现
      • 401 Unautorized - 请求未经授权
      • 404 - 请求资源不存在,可能是输入了错误的URL
    • 5xx
      • 服务器错误,服务器未能实现合法的请求
      • 500 - 服务器内部发生了不可预期的错误
      • 504 Gateway Timeout - 网关或者代理的服务器无法在规定的时间内获得想要的响应
  • RESTful API

    • 一种API设计风格;Representational State Transfer
    • 意义
      • 每个URL代表一种资源
      • 客服端和服务器之间,传递这种资源的某种表现层
      • 客服端通过HTTP method,对服务器端资源进行操作,实现“表现层状态转化”
    • image.png
  • 常用请求头 image.png image.png

  • 缓存

    • 强缓存
      • 本地有直接用
      • 请求头
        • Expires 时间戳
        • Cache-Control
          • 可缓存性
            • no-cache:协商缓存验证
            • no-store:不使用任何缓存
          • 到期
            • max-age:单位是秒,存储的最大周期,相对于请求的时间
          • 重新验证/重新加载
            • must-revalidate:一旦资源过期,在成功向原始服务器验证之前,不能使用
    • 协商缓存
      • 本地有要协商是否能用
        • Etag/If-None-Match:资源的特定版本的标识符,类似于指纹
        • Last-Modified/If-Modified-Sine:最后修改时间
    • 过程 image.png
  • cookie

    • Set - Cookie - response image.png

场景分析

静态资源

  • 方案
    • 缓存 + CDN + 文件名hash
    • CDN(Content Delivery Network)
      • 通过用户就近性和服务器负载的判断CDN确保内容以一种极为高效的方式为用户的请求提供服务 image.png
    • 文件名hash
      • 通过文件名改变做到网站更新

登录

  • origin组成
  • 跨域(cross-origin) image.png
    • 处理
      • CORS
        • 预请求(复杂请求)
          • 获知服务器是否允许该跨源请求
        • 相关协议头 image.png
      • 代理服务器
        • 同源策略是浏览器的安全策略,不是HTTP的
      • Iframe
  • 鉴权
    • 记住登录
      • Session + cookie
      • JWT(JSON web token)
  • SSO:单点登录(Single Sign Only) image.png

HTTP 协议实战

浏览器

  • XHR

image.png

  • Fetch

    image.png

Node篇

  • 标准库 HTTP/HTTPS
  • 常用请求库 axios

网络优化手段

  • 速度

image.png

  • 稳定性

image.png

HTTP 协议拓展 - 通信方式

  • WebSocket

image.png

  • QUIC(Quick UDP Internet Connection)

image.png