HTTP 实用指南 | 青训营笔记

58 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第 6 天

HTTP 实用指南

初识 HTTP

概念

Hyper Text Transfer Protocol 超文本传输协议=

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

特点

  • 请求, 响应
  • 简单可扩展
  • 无状态

协议分析

发展

  • 0.9: 请求 GET, 响应只有 HTML
  • 1.0: 增加了 Header, 状态码, 支持多种文档类型
  • 1.1: 链接服用, 缓存, 内容协商
  • 2: 二进制协议, 压缩 header, 服务器推送
  • 3: 限制只有草案

报文

Method:

  • GET, POST, PUT, DELETE, HEAD, CONNECT, OPTIONS, TRACE, PATCH
  • Safe: 不会修改服务器数据的方法: GET, HEAD, OPTIONS
  • ldempotent(幂等): 多次请求结果一致

状态码:

  • 1xx: 已经接受, 继续处理

  • 2xx: 请求已被成功接受

    • 200 OK, 请求成功
  • 3xx: 重定向

    • 301 永久转移
    • 302 临时跳转
  • 4xx: 客户端错误, 请求无法实现

    • 401 请求未经授权
    • 404 请求资源不存在
  • 5xx: 服务端错误

    • 500 服务器发送不可预期的错误
    • 504 Gateway Timeout 无法在规定时间内获得想要的响应

常用请求头

  • Accept
  • Content - Type: 实体类型
  • Cache - Control: 缓存不缓存
  • If - Modified - Since
  • Expires: 时间戳
  • Max - age: 本地存活多长时间
  • If - None - Match
  • Cookie: 同域自动携带
  • Referer
  • Origin
  • User - Agent

常用响应头

  • Content - Type
  • Cache - Control
  • Last - Modified
  • Expires
  • Max - age
  • ETag
  • Set - Cooike
  • Server
  • Access - Control - Allow - Origin

缓存

  • 先查缓存

cookie

  • Name
  • Expires
  • Path
  • Domain
  • secure
  • HttpOnly
  • SameSite

Http2

  • 更快, 更稳定, 更简单
  • 帧: HTTP/2 通信的最小单位, 没个帧都包含帧头, 至少也会标识出当前帧所属的数据流
  • 消息: 与逻辑请求或响应消息对应的完整的一系列帧
  • 数据流: 已建立的连接内的双向字节流, 可以承载一条或多条消息
  • 连接都是永久的, 仅需要每个来源一个连接
  • 流控制: 组织发送方向接受方发送大量数据的机制

HTTPS

  • Hypertext Transfer Protocol Secure

常见场景

静态资源部署

  • 方案: 缓存 + CDN + 文件名 hash

登录

  • 跨域场景下的 options 请求

跨域

CORS (Cross = Origin Resoource Sharing)

  • 代理服务器

鉴权

  • Session + cookie
  • JWT (JSON web token)

SSO

  • 单点登录(Single Sign On)

实际应用

浏览器篇

  • AJAX 之 Fetch

    • XMLHttpReqquet
    • Promise
    • 模块化设计, Response, Request, Header
    • 数据流处理对象

实战 - node 篇

  • 标准库 HTTP / HTTPS
  • 默认模块, 但是功能有限

Other

  • axios

了解更多

  • WebSocket

  • QUIC: Quick UDP Internet Connection

    • 0-RTT 建联
    • 类似于 TCP d1kekaochuanshu1
    • 前向纠错 FEC

END

\