什么是HTTP
HTTP(HyperText Transfer Protocol)是万维网数据通信的基础协议,作为应用层协议具有以下关键特性:
客户端-服务器模型:基于请求/响应模式
无状态协议:默认不保留通信状态
可扩展性:通过首部字段扩展功能
明文传输(HTTPS 实现加密)
协议演进历程
版本 | 发布时间 | 核心改进 | 典型应用场景 |
---|---|---|---|
HTTP/0.9 | 1991 | 仅支持 GET 方法 | 早期简单文档传输 |
HTTP/1.0 | 1996 | 引入 HEAD/POST 方法、状态码 | 基础网页浏览 |
HTTP/1.1 | 1997 | 持久连接、管道化、缓存控制 | 现代 Web 应用基础 |
HTTP/2 | 2015 | 二进制分帧、头部压缩、多路复用 | 高性能网站/SPA |
HTTP/3 | 2022 | QUIC 协议、0-RTT 连接 | 移动端/高延迟环境 |
请求报文
GET /api/users HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json(请求体)
响应报文
HTTP/1.1 200 OK Content-Type: application/json Date: Wed, 21 Oct 2023 07:28:00 GMT{"data": [...] }
请求方法矩阵
方法 | 幂等性 | 安全性 | 典型应用场景 |
---|---|---|---|
GET | 是 | 是 | 获取资源 |
POST | 否 | 否 | 创建资源/提交表单 |
PUT | 是 | 否 | 完整更新资源 |
PATCH | 否 | 否 | 部分更新资源 |
DELETE | 是 | 否 | 删除资源 |
HEAD | 是 | 是 | 获取响应头信息 |
状态码分类
状态码 | 类别 | 常见示例 | 开发者处理建议 |
---|---|---|---|
1xx | 信息响应 | 100 Continue | 等待后续请求 |
2xx | 成功响应 | 200 OK / 201 Created | 正常处理业务逻辑 |
3xx | 重定向 | 301 Moved Permanently | 更新书签/处理跳转逻辑 |
4xx | 客户端错误 | 400 Bad Request | 检查请求参数/权限配置 |
5xx | 服务端错误 | 500 Internal Server Error | 排查服务端代码/日志 |
连接管理优化
策略 | HTTP/1.1 | HTTP/2 |
---|---|---|
连接复用 | Keep-Alive | 多路复用 |
头部压缩 | 无 | HPACK 压缩 |
服务器推送 | 不支持 | 支持 |
请求优先级 | 无 | 流优先级控制 |
缓存策略设计
graph LR
A[客户端请求] --> B{缓存有效?}
B -->|是| C[返回304 Not Modified]
B -->|否| D[返回200 + 新资源]