HTTP相关
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 头部
- 预检请求
- 简单请求
- 复杂请求
九、 Cookie 与会话
- 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 开源项目
- 技术博客