HTTP 协议详解

HTTP 请求方法

HTTP/1.1 定义了 8 种请求方法,每种方法具有特定的语义:

方法 幂等性 缓存 请求体 响应体 用途
GET 获取资源
POST 提交数据
PUT 替换资源
DELETE 删除资源
HEAD 获取元信息
OPTIONS 查询选项
PATCH 部分更新
TRACE 追踪请求

状态码分类

1xx - 信息响应

1
2
100 Continue - 继续发送请求体
101 Switching Protocols - 协议切换

2xx - 成功

1
2
3
4
200 OK - 请求成功
201 Created - 资源已创建
204 No Content - 无内容
206 Partial Content - 部分内容

3xx - 重定向

1
2
3
4
301 Moved Permanently - 永久重定向
302 Found - 临时重定向
304 Not Modified - 未修改
307 Temporary Redirect - 临时重定向

4xx - 客户端错误

1
2
3
4
5
400 Bad Request - 请求格式错误
401 Unauthorized - 需要认证
403 Forbidden - 禁止访问
404 Not Found - 资源不存在
429 Too Many Requests - 请求过于频繁

5xx - 服务器错误

1
2
3
4
500 Internal Server Error - 服务器内部错误
502 Bad Gateway - 网关错误
503 Service Unavailable - 服务不可用
504 Gateway Timeout - 网关超时

HTTP 缓存机制

强缓存 (Cache-Control)

1
2
3
HTTP/1.1 200 OK
Cache-Control: max-age=3600, public
Expires: Wed, 25 Mar 2026 11:20:00 GMT

浏览器直接使用本地缓存,不发送请求。

协商缓存

使用 ETag:

1
2
3
4
5
6
7
8
9
10
# 第一次请求
HTTP/1.1 200 OK
ETag: "abc123"

# 再次请求
GET /resource HTTP/1.1
If-None-Match: "abc123"

# 服务器响应
HTTP/1.1 304 Not Modified

使用 Last-Modified:

1
2
3
4
5
6
7
8
9
10
# 第一次请求
HTTP/1.1 200 OK
Last-Modified: Tue, 24 Mar 2026 10:00:00 GMT

# 再次请求
GET /resource HTTP/1.1
If-Modified-Since: Tue, 24 Mar 2026 10:00:00 GMT

# 服务器响应
HTTP/1.1 304 Not Modified

HTTP/2 对比 HTTP/1.1

特性 HTTP/1.1 HTTP/2 改进
连接管理 Keep-Alive 多路复用 性能提升 30-50%
头部压缩 ✓ (HPACK) 减少开销
服务器推送 预加载资源
请求优先级 智能调度
二进制分帧 效率提升

性能优化建议

1. 启用 Gzip 压缩

1
2
3
gzip on;
gzip_types text/plain text/css application/json application/javascript;
gzip_min_length 1000;

2. 合理设置 Cache-Control

1
2
3
4
5
# 静态资源 - 长期缓存
Cache-Control: public, max-age=31536000

# 动态内容 - 短期缓存或不缓存
Cache-Control: no-cache, max-age=0

3. CDN 部署

  • 地理位置分布
  • 源站卸载
  • DDoS 防护

4. 减少请求数

  • CSS 文件合并
  • 图片精灵图
  • 内联小资源
  • 异步加载非关键资源

安全性头部

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 防止 Clickjacking
X-Frame-Options: SAMEORIGIN

# 防止 MIME 嗅探
X-Content-Type-Options: nosniff

# 启用 XSS 过滤
X-XSS-Protection: 1; mode=block

# CSP 策略
Content-Security-Policy: default-src 'self'

# HTTPS 强制
Strict-Transport-Security: max-age=31536000; includeSubDomains

更新于: 2026-03-22
难度: 高级
阅读时间: 12-15 分钟
相关主题: HTTP/3, QUIC, gRPC