HTTP相关

2 minute read

HTTP 协议 系统学习大纲

一、 HTTP 协议概述

  • 1.1 HTTP 是什么?
    • 定义:超文本传输协议
    • 作用:客户端和服务器之间的通信协议
    • 位置:应用层协议,基于 TCP/IP
  • 1.2 HTTP 的历史与发展
    • HTTP/0.9:初始版本,只有 GET 方法
    • HTTP/1.0:支持多种方法、状态码、头部
    • HTTP/1.1:持久连接、管道化、分块传输
    • HTTP/2:二进制协议、头部压缩、多路复用、服务器推送
    • HTTP/3:基于 QUIC 协议,解决队头阻塞
  • 1.3 HTTP 的核心特性
    • 无状态:每次请求独立
    • 可扩展:通过头部字段扩展功能
    • 客户端-服务器架构
    • 支持缓存
    • 支持中间人(代理、网关)

二、 HTTP 消息结构

  • 2.1 HTTP 请求消息
    GET /index.html HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0
    Accept: text/html
    Accept-Language: en-US
    
  • 2.2 HTTP 响应消息
    HTTP/1.1 200 OK
    Date: Mon, 23 May 2022 22:38:34 GMT
    Content-Type: text/html; charset=UTF-8
    Content-Length: 138
    Last-Modified: Wed, 08 Jan 2022 23:11:55 GMT
    Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
    
    <html>
    <body>
    <h1>Hello, World!</h1>
    </body>
    </html>
    
  • 2.3 消息组成部分
    • 起始行(请求行/状态行)
    • 消息头部
    • 空行
    • 消息体

三、 HTTP 方法

  • 3.1 安全方法
    • GET:获取资源
    • HEAD:获取响应头
    • OPTIONS:查询服务器支持的方法
    • TRACE:追踪路径
  • 3.2 非安全方法
    • POST:提交数据
    • PUT:替换资源
    • DELETE:删除资源
    • PATCH:局部更新资源
  • 3.3 方法特性
    • 幂等性
    • 安全性
    • 可缓存性
  • 3.4 RESTful API 中的方法使用

四、 HTTP 状态码

  • 4.1 1xx 信息响应
    • 100 Continue
    • 101 Switching Protocols
  • 4.2 2xx 成功响应
    • 200 OK
    • 201 Created
    • 204 No Content
    • 206 Partial Content
  • 4.3 3xx 重定向
    • 301 Moved Permanently
    • 302 Found
    • 304 Not Modified
    • 307 Temporary Redirect
    • 308 Permanent Redirect
  • 4.4 4xx 客户端错误
    • 400 Bad Request
    • 401 Unauthorized
    • 403 Forbidden
    • 404 Not Found
    • 405 Method Not Allowed
    • 408 Request Timeout
    • 429 Too Many Requests
  • 4.5 5xx 服务器错误
    • 500 Internal Server Error
    • 502 Bad Gateway
    • 503 Service Unavailable
    • 504 Gateway Timeout

五、 HTTP 头部

  • 5.1 通用头部
    • Cache-Control
    • Connection
    • Date
    • Transfer-Encoding
  • 5.2 请求头部
    • Accept
    • Authorization
    • Cookie
    • Host
    • Referer
    • User-Agent
  • 5.3 响应头部
    • ETag
    • Location
    • Server
    • Set-Cookie
  • 5.4 实体头部
    • Content-Type
    • Content-Length
    • Content-Encoding
    • Last-Modified
  • 5.5 安全相关头部
    • Content-Security-Policy
    • Strict-Transport-Security
    • X-Content-Type-Options
    • X-Frame-Options

六、 连接管理

  • 6.1 HTTP/1.0 连接
    • 短连接:每次请求建立新连接
  • 6.2 HTTP/1.1 连接
    • 持久连接:Keep-Alive
    • 管道化
  • 6.3 HTTP/2 连接
    • 二进制分帧
    • 多路复用
    • 服务器推送
    • 头部压缩
  • 6.4 HTTP/3 连接
    • 基于 QUIC
    • 解决队头阻塞
    • 快速握手
  • 6.5 连接优化
    • 域名分片
    • 长轮询
    • WebSocket

七、 缓存机制

  • 7.1 缓存类型
    • 私有缓存
    • 共享缓存
  • 7.2 缓存控制头部
    • Cache-Control
    • Expires
    • Pragma
  • 7.3 验证机制
    • Last-Modified / If-Modified-Since
    • ETag / If-None-Match
  • 7.4 缓存策略
    • 强缓存
    • 协商缓存
    • 缓存优先级
  • 7.5 清除缓存
    • 版本化 URL
    • 强制刷新

八、 认证与安全

  • 8.1 基本认证
    Authorization: Basic dXNlcjpwYXNz
    
  • 8.2 摘要认证
  • 8.3 Bearer Token 认证
    Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
    
  • 8.4 OAuth 2.0
    • 授权码模式
    • 客户端凭证模式
    • 密码模式
    • 简化模式
  • 8.5 HTTPS
    • SSL/TLS
    • 证书验证
    • 混合内容
  • 8.6 跨域资源共享
    • CORS 头部
    • 预检请求
    • 简单请求
    • 复杂请求
  • 9.1 Cookie 基础
    • Set-Cookie
    • Cookie
  • 9.2 Cookie 属性
    • Domain
    • Path
    • Expires/Max-Age
    • HttpOnly
    • Secure
    • SameSite
  • 9.3 会话管理
    • 基于 Cookie 的会话
    • 基于 Token 的会话
    • 会话劫持防护
  • 9.4 会话存储
    • 内存存储
    • 数据库存储
    • Redis 存储

十、 数据格式与编码

  • 10.1 内容协商
    • Accept
    • Accept-Encoding
    • Accept-Language
  • 10.2 媒体类型
    • text/html
    • application/json
    • application/xml
    • multipart/form-data
  • 10.3 传输编码
    • chunked
    • gzip
    • deflate
    • br
  • 10.4 字符编码
    • charset=utf-8
    • Content-Type 指定

十一、 状态管理

  • 11.1 无状态协议
    • 状态的含义
    • 无状态的优点
  • 11.2 状态保持
    • Cookie
    • URL 重写
    • 隐藏表单字段
  • 11.3 REST 的无状态约束

十二、 性能优化

  • 12.1 请求优化
    • 减少请求数量
    • 使用雪碧图
    • 代码合并
  • 12.2 传输优化
    • 启用压缩
    • 使用 CDN
    • 启用 HTTP/2
  • 12.3 缓存优化
    • 合理设置缓存头
    • 使用 Service Worker
  • 12.4 资源优化
    • 延迟加载
    • 预加载
    • 预连接

十三、 安全实践

  • 13.1 常见攻击
    • CSRF
    • XSS
    • 点击劫持
    • 中间人攻击
  • 13.2 防御措施
    • CSRF Token
    • Content Security Policy
    • X-Frame-Options
    • HTTP Strict Transport Security
  • 13.3 安全头部配置
    • 完整的安全头部示例
    • 头部检测工具

十四、 工具与调试

  • 14.1 命令行工具
    • curl
    • telnet
    • openssl
  • 14.2 图形化工具
    • Postman
    • Insomnia
    • HTTPie
  • 14.3 浏览器开发者工具
    • Network 面板
    • 查看请求/响应
    • 性能分析
  • 14.4 代理工具
    • Fiddler
    • Charles
    • Wireshark
  • 14.5 在线工具
    • Webhook 测试
    • HTTP 状态码检查
    • 头部分析

十五、 协议扩展

  • 15.1 WebDAV
    • 方法扩展
    • 集合操作
  • 15.2 WebSocket
    • 握手过程
    • 双向通信
  • 15.3 Server-Sent Events
    • 服务器推送
    • 长连接
  • 15.4 HTTP/2 Push
    • 服务器主动推送
    • 推送限制

十六、 RESTful API 设计

  • 16.1 REST 原则
    • 统一接口
    • 无状态
    • 可缓存
    • 客户端-服务器
    • 分层系统
    • 按需代码
  • 16.2 资源设计
    • 资源标识
    • 资源操作
    • 版本管理
  • 16.3 错误处理
    • 统一错误格式
    • 适当的 HTTP 状态码
  • 16.4 分页与过滤
    • 分页参数
    • 过滤条件
    • 排序参数
  • 16.5 API 文档
    • OpenAPI/Swagger
    • API Blueprint
    • RAML

十七、 实战应用

  • 17.1 文件上传
    • multipart/form-data
    • 分块上传
    • 断点续传
  • 17.2 文件下载
    • Content-Disposition
    • 大文件下载
    • 流式下载
  • 17.3 实时通信
    • WebSocket
    • Server-Sent Events
    • 长轮询
  • 17.4 反向代理
    • Nginx 配置
    • 负载均衡
    • 缓存代理
  • 17.5 API 网关
    • 认证授权
    • 限流熔断
    • 监控日志

十八、 学习资源

  • 18.1 官方文档
    • RFC 文档
    • MDN Web Docs
  • 18.2 在线课程
    • 计算机网络相关课程
    • Web 开发课程
  • 18.3 书籍推荐
    • 《HTTP 权威指南》
    • 《图解 HTTP》
  • 18.4 实践项目
    • 实现简单的 HTTP 服务器
    • 开发 RESTful API
    • 性能测试与优化
  • 18.5 社区资源
    • Stack Overflow
    • GitHub 开源项目
    • 技术博客

Tags:

Categories:

Updated: