📌 第一部分:HTTP/HTTPS 概览与定位
1.1 定义与全称
HTTP(HyperText Transfer Protocol,超文本传输协议)是 Tim Berners-Lee 于 1991 年创建的 Web 通信协议,是互联网上应用最广泛的协议。HTTPS 是 HTTP 的安全版本,通过 SSL/TLS 加密通信内容,保护数据隐私和完整性。
1.2 核心定位
HTTP/HTTPS 的核心定位是 Web 通信的标准协议。它提供了:
- 客户端-服务器通信模型
- 请求-响应模式
- 无状态协议(默认)
- 丰富的请求方法(GET、POST、PUT、DELETE 等)
- 状态码(200、404、500 等)
- 头部(Header)和主体(Body)
- 缓存机制
- 内容协商(Content Negotiation)
1.3 主要应用领域
- Web 浏览: 浏览器访问网站
- API 通信: RESTful API、GraphQL
- 文件传输: 文件上传和下载
- 实时通信: WebSocket、Server-Sent Events
- IoT 设备通信: 设备与云端通信
- 微服务通信: 服务间 HTTP 调用
1.4 发展历程
- HTTP/0.9(1991年): 仅有 GET 方法,只能获取 HTML
- HTTP/1.0(1996年): 支持多种请求方法、头部
- HTTP/1.1(1997年): 最经典版本——长连接、管道化
- HTTP/2(2015年): 多路复用、服务器推送、头部压缩
- HTTP/3(2022年): 基于 QUIC,更快的连接建立和传输
- HTTPS: 1994 年首次实现,2000 年后逐步普及
⚙️ 第二部分:HTTP 核心概念
2.1 请求结构
// HTTP 请求示例
GET /api/users/123 HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json
Authorization: Bearer token123
Cookie: session=abc123
// 请求体(POST/PUT)
{
"name": "Alice",
"email": "alice@example.com"
}
2.2 响应结构
// HTTP 响应示例
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 45
Cache-Control: max-age=3600
Set-Cookie: session=xyz789
{
"id": 123,
"name": "Alice",
"email": "alice@example.com"
}
2.3 请求方法
- GET: 获取资源(幂等)
- POST: 创建资源(非幂等)
- PUT: 更新资源(幂等)
- PATCH: 部分更新(非幂等)
- DELETE: 删除资源(幂等)
- HEAD: 获取响应头(类似 GET,不返回 Body)
- OPTIONS: 查询支持的请求方法
- TRACE: 跟踪请求路径
2.4 状态码
- 1xx: 信息性(100 Continue)
- 2xx: 成功(200 OK、201 Created、204 No Content)
- 3xx: 重定向(301 Moved、302 Found、304 Not Modified)
- 4xx: 客户端错误(400 Bad Request、401 Unauthorized、403 Forbidden、404 Not Found、429 Too Many Requests)
- 5xx: 服务器错误(500 Internal Server Error、502 Bad Gateway、503 Service Unavailable)
2.5 常见头部字段
- Host: 目标主机名
- User-Agent: 客户端标识
- Accept: 客户端接受的内容类型
- Content-Type: 消息体的内容类型
- Authorization: 认证信息
- Cookie: 客户端发送的 Cookie
- Set-Cookie: 服务器设置的 Cookie
- Cache-Control: 缓存策略
- Location: 重定向地址
- Content-Encoding: 压缩方式(gzip)
- Origin: 请求来源(CORS)
- Access-Control-Allow-Origin: CORS 允许的来源
🔒 第三部分:HTTPS 与安全
3.1 HTTP vs HTTPS
- HTTP: 明文传输,容易被监听和篡改
- HTTPS: 使用 TLS/SSL 加密,保护数据隐私
- 端口: HTTP 默认 80,HTTPS 默认 443
3.2 SSL/TLS 原理
- 非对称加密: 握手阶段交换密钥
- 对称加密: 传输阶段加密数据
- 数字证书: 验证服务器身份
- CA(证书颁发机构): 签发证书的可信机构
3.3 HTTPS 工作流程
- 客户端请求 HTTPS 连接
- 服务器发送数字证书
- 客户端验证证书
- 生成对称加密密钥
- 用服务器公钥加密密钥
- 服务器解密获取对称密钥
- 建立加密通道,开始安全通信
3.4 安全最佳实践
- 强制 HTTPS: 所有网站都应使用 HTTPS
- HSTS: Strict-Transport-Security 强制浏览器使用 HTTPS
- 证书更新: 及时更新 SSL 证书
- 使用强加密: TLS 1.3 及以上
- 定期安全审计: 检查证书和加密配置
🚀 第四部分:HTTP/2 与 HTTP/3
4.1 HTTP/1.1 的局限
- 队头阻塞(一个连接一次只能处理一个请求)
- 头部冗余(每次请求都发送重复头部)
- 并发限制(浏览器限制每个域名的连接数)
4.2 HTTP/2 改进
- 多路复用: 一个连接同时处理多个请求
- 头部压缩: HPACK 算法压缩头部
- 服务器推送: 主动推送资源
- 二进制协议: 解析更快
- 优先级: 控制请求优先级
4.3 HTTP/3 创新
- 基于 QUIC: 使用 UDP 替代 TCP
- 更快连接建立: 0-RTT 连接恢复
- 内置 TLS 1.3: 默认加密
- 更好的移动网络支持: 连接迁移
- 更少的队头阻塞: 流独立
4.4 版本对比
| 特性 |
HTTP/1.1 |
HTTP/2 |
HTTP/3 |
| 多路复用 | ❌ | ✅ | ✅ |
| 头部压缩 | ❌ | ✅ | ✅ |
| 服务器推送 | ❌ | ✅ | ✅ |
| 基于传输 | TCP | TCP | UDP(QUIC) |
| 连接建立 | 3次握手 + TLS | 3次握手 + TLS | 0-RTT |
| 队头阻塞 | 严重 | 部分解决 | 几乎解决 |
🌐 第五部分:CORS(跨域资源共享)
5.1 同源策略
浏览器限制跨域请求,防止恶意网站获取用户数据。协议、域名、端口任一不同即为跨域。
5.2 CORS 工作原理
- 简单请求: 浏览器自动添加 Origin 头
- 预检请求: OPTIONS 方法检查服务器是否允许
- 响应头: Access-Control-Allow-Origin 等
5.3 常用 CORS 头
- Access-Control-Allow-Origin: 允许的来源
- Access-Control-Allow-Methods: 允许的请求方法
- Access-Control-Allow-Headers: 允许的请求头
- Access-Control-Allow-Credentials: 是否允许发送 Cookie
- Access-Control-Max-Age: 预检缓存时间
🧠 第六部分:学习建议
1
基础入门
HTTP 消息结构、请求方法、状态码、常见头部
2
核心进阶
HTTPS 原理、SSL/TLS、CORS、缓存机制
3
高级特性
HTTP/2、HTTP/3、WebSocket、Server-Sent Events
4
工具与调试
浏览器开发者工具、Postman、cURL、Wireshark
推荐学习资源
- MDN HTTP 文档: developer.mozilla.org/en-US/docs/Web/HTTP
- 《HTTP 权威指南》—— 全面介绍
- RFC 文档: 官方规范(RFC 9110、RFC 9113、RFC 9114)
- Cloudflare: HTTP/2 和 HTTP/3 介绍
🎯 总结升华
HTTP/HTTPS 是 Web 开发的"第一课"。
无论你使用什么编程语言或框架,理解 HTTP 协议是理解 Web 应用的基础。从请求方法到状态码,从缓存策略到安全机制,HTTP 的知识贯穿整个 Web 开发生涯。
掌握 HTTP 协议,意味着你能 高效调试 API、优化性能、保障安全。
"HTTP 是互联网的通用语言。" 🌐
🔖 相关标签
#Web 协议
#HTTP
#HTTPS
#SSL/TLS
#RESTful
#CORS
#API
📄 本文档为 HTTP/HTTPS 完整白皮书 · 最后更新于 2026年06月28日