HTTP 请求头信息及其用途详细说明
- [HTTP 请求头信息及其用途详细说明](#HTTP 请求头信息及其用途详细说明)
-
- 一、基础请求头
-
- 二、内容协商头
-
- [2.1 内容类型协商](#2.1 内容类型协商)
- [2.2 质量值 (q-value) 语法](#2.2 质量值 (q-value) 语法)
- 三、缓存控制头
-
- [3.1 缓存验证头](#3.1 缓存验证头)
- [3.2 缓存行为控制](#3.2 缓存行为控制)
- 四、连接控制头
-
- 五、认证和安全头
-
- [5.1 身份认证头](#5.1 身份认证头)
- [5.2 安全相关头](#5.2 安全相关头)
- 六、请求体相关头
-
- [6.1 内容描述头](#6.1 内容描述头)
- [6.2 范围请求头](#6.2 范围请求头)
- [七、CORS 和跨域头](#七、CORS 和跨域头)
-
- [7.1 简单请求头](#7.1 简单请求头)
- [7.2 预检请求头](#7.2 预检请求头)
- 八、性能优化头
-
- [8.1 资源提示头](#8.1 资源提示头)
- [8.2 网络条件头](#8.2 网络条件头)
- 九、自定义和应用头
-
- [9.1 常见自定义头](#9.1 常见自定义头)
- 十、完整请求示例
-
- [10.1 REST API 请求示例](#10.1 REST API 请求示例)
- [10.2 文件上传请求示例](#10.2 文件上传请求示例)
- 十一、请求头最佳实践
-
- [11.1 安全性最佳实践](#11.1 安全性最佳实践)
- [11.2 性能最佳实践](#11.2 性能最佳实践)
- [11.3 兼容性考虑](#11.3 兼容性考虑)
- 十二、工具和调试
-
- [12.1 cURL 示例](#12.1 cURL 示例)
- [12.2 JavaScript Fetch API](#12.2 JavaScript Fetch API)
- 十三、总结表格
- 相关文献
HTTP 请求头信息及其用途详细说明
HTTP 请求头是客户端发送给服务器的元数据,用于传递请求的附加信息、客户端能力、认证信息等。下面按功能分类详细说明各种 HTTP 请求头。
一、基础请求头
1.1 必需请求头
请求头 |
格式示例 |
用途说明 |
Host |
Host: api.example.com |
必需头,指定请求的目标服务器域名和端口 |
User-Agent |
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
标识客户端软件信息,用于统计和兼容性处理 |
Accept |
Accept: text/html,application/xhtml+xml |
声明客户端能够处理的内容类型 |
二、内容协商头
2.1 内容类型协商
http
复制代码
GET /api/data HTTP/1.1
Accept: application/json, text/javascript, */*
Accept-Language: zh-CN, zh; q=0.9, en; q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Charset: utf-8, iso-8859-1; q=0.5
请求头 |
说明 |
示例值 |
Accept |
客户端接受的响应内容类型 |
application/json, text/plain; q=0.8 |
Accept-Language |
客户端接受的自然语言 |
zh-CN, en-US; q=0.7 |
Accept-Encoding |
客户端接受的压缩编码 |
gzip, deflate, br |
Accept-Charset |
客户端接受的字符集 |
utf-8, iso-8859-1 |
2.2 质量值 (q-value) 语法
http
复制代码
Accept: text/html, application/xml; q=0.9, */*; q=0.8
- 质量值范围:0.0-1.0,默认 1.0
- 数值越高优先级越高
三、缓存控制头
3.1 缓存验证头
http
复制代码
GET /resource HTTP/1.1
If-None-Match: "686897696a7c876b7e"
If-Modified-Since: Wed, 21 Oct 2015 07:28:00 GMT
Cache-Control: no-cache
请求头 |
说明 |
使用场景 |
If-Modified-Since |
如果资源在此时间后修改过才返回 |
条件请求,节省带宽 |
If-None-Match |
如果 ETag 不匹配才返回内容 |
更精确的条件请求 |
If-Match |
仅当 ETag 匹配时才执行操作 |
乐观并发控制 |
If-Unmodified-Since |
仅当资源未修改时才执行操作 |
文件上传断点续传 |
3.2 缓存行为控制
http
复制代码
Cache-Control: no-cache, no-store, max-age=0
Pragma: no-cache
指令 |
说明 |
no-cache |
强制向服务器验证缓存 |
no-store |
不存储任何缓存 |
max-age=0 |
缓存立即过期 |
max-stale=300 |
接受过期不超过300秒的缓存 |
四、连接控制头
4.1 连接管理
http
复制代码
Connection: keep-alive, Upgrade
Keep-Alive: timeout=5, max=100
Upgrade: h2c, websocket
TE: trailers, deflate; q=0.5
请求头 |
说明 |
示例 |
Connection |
控制当前连接 |
keep-alive , close |
Keep-Alive |
持久连接参数 |
timeout=5, max=100 |
Upgrade |
请求协议升级 |
websocket , h2c |
TE |
传输编码偏好 |
trailers , gzip |
五、认证和安全头
5.1 身份认证头
http
复制代码
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Cookie: sessionid=abc123; user_prefs=dark_mode
Proxy-Authorization: Basic dGVzdDp0ZXN0
请求头 |
认证方案 |
格式 |
Authorization |
Bearer Token |
Bearer <token> |
Authorization |
Basic Auth |
Basic base64(username:password) |
Cookie |
会话管理 |
name=value; name2=value2 |
Proxy-Authorization |
代理认证 |
同 Authorization |
5.2 安全相关头
http
复制代码
Origin: https://example.com
Referer: https://example.com/page
User-Agent: Mozilla/5.0 (compatible; MSIE 10.0;)
X-Requested-With: XMLHttpRequest
X-CSRF-Token: abcdef123456
请求头 |
安全用途 |
注意事项 |
Origin |
CORS 请求源检查 |
同源策略关键头 |
Referer |
请求来源页面 |
可能泄露敏感信息 |
X-Requested-With |
标识 AJAX 请求 |
CSRF 防护参考 |
X-CSRF-Token |
CSRF 令牌 |
自定义防护头 |
六、请求体相关头
6.1 内容描述头
http
复制代码
POST /api/users HTTP/1.1
Content-Type: application/json; charset=utf-8
Content-Length: 156
Content-Encoding: gzip
Content-Language: zh-CN
Content-Location: /api/v2/users
请求头 |
说明 |
示例 |
Content-Type |
请求体的媒体类型 |
application/json |
Content-Length |
请求体字节数 |
1024 |
Content-Encoding |
内容编码方式 |
gzip , deflate |
Content-Language |
内容自然语言 |
zh-CN , en-US |
6.2 范围请求头
http
复制代码
Range: bytes=0-499
If-Range: "abc123"
请求头 |
说明 |
使用场景 |
Range |
请求部分内容 |
大文件下载、视频流 |
If-Range |
条件范围请求 |
断点续传 |
七、CORS 和跨域头
7.1 简单请求头
http
复制代码
GET /api/data HTTP/1.1
Origin: https://client.example.com
7.2 预检请求头
http
复制代码
OPTIONS /api/data HTTP/1.1
Origin: https://client.example.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-Custom-Header, Content-Type
请求头 |
CORS 阶段 |
用途 |
Origin |
所有跨域请求 |
声明请求来源 |
Access-Control-Request-Method |
预检请求 |
声明实际请求方法 |
Access-Control-Request-Headers |
预检请求 |
声明自定义头 |
八、性能优化头
8.1 资源提示头
http
复制代码
Link: </style.css>; rel=preload; as=style
Prefer: return=representation, wait=100
Early-Data: 1
请求头 |
优化类型 |
效果 |
Link |
资源预加载 |
提前加载关键资源 |
Prefer |
服务器行为偏好 |
控制响应处理方式 |
Early-Data |
0-RTT 数据 |
TLS 1.3 0-RTT 优化 |
8.2 网络条件头
http
复制代码
Save-Data: on
Device-Memory: 4
Downlink: 1.5
ECT: 4g
请求头 |
客户端能力 |
服务器优化策略 |
Save-Data |
省流量模式 |
返回压缩内容 |
Device-Memory |
设备内存 |
调整资源大小 |
Downlink |
下行带宽 |
调整传输策略 |
九、自定义和应用头
9.1 常见自定义头
http
复制代码
X-API-Key: abc123def456
X-Request-ID: 123e4567-e89b-12d3-a456-426614174000
X-Forwarded-For: 203.0.113.195, 70.41.3.18
X-Forwarded-Proto: https
X-Forwarded-Host: api.example.com
自定义头 |
用途 |
示例值 |
X-API-Key |
API 密钥认证 |
随机字符串 |
X-Request-ID |
请求追踪 |
UUID |
X-Forwarded-For |
真实客户端 IP |
IP 地址链 |
X-Forwarded-Proto |
原始协议 |
https |
十、完整请求示例
10.1 REST API 请求示例
http
复制代码
POST /api/v1/users HTTP/1.1
Host: api.example.com
User-Agent: MyApp/1.0.0 (iOS 14.5; iPhone)
Accept: application/json
Accept-Language: zh-CN, en; q=0.8
Accept-Encoding: gzip, deflate
Content-Type: application/json; charset=utf-8
Content-Length: 89
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Cache-Control: no-cache
X-Request-ID: 550e8400-e29b-41d4-a716-446655440000
{
"name": "张三",
"email": "zhangsan@example.com",
"age": 30
}
10.2 文件上传请求示例
http
复制代码
POST /upload HTTP/1.1
Host: files.example.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Length: 10245
Authorization: Bearer token123
Content-Disposition: form-data; name="file"; filename="image.jpg"
Content-Type: image/jpeg
[binary file data]
十一、请求头最佳实践
11.1 安全性最佳实践
http
复制代码
# 好的实践
Authorization: Bearer [JWT Token]
X-Request-ID: [UUID for tracing]
Content-Type: application/json; charset=utf-8
# 避免的做法
Cookie: sensitive_session_data # 使用 HttpOnly Cookie 代替
Authorization: Basic plaintext_credentials # 使用 Token 代替
11.2 性能最佳实践
http
复制代码
# 启用压缩
Accept-Encoding: gzip, deflate, br
# 合理缓存
Cache-Control: no-cache # 动态数据
If-None-Match: "etag_value" # 条件请求
# 资源提示
Link: </critical.css>; rel=preload; as=style
11.3 兼容性考虑
http
复制代码
# 渐进增强
Accept: application/json, text/plain; q=0.8, */*; q=0.1
Accept-Language: zh-CN, zh; q=0.9, en; q=0.8
# 传统浏览器支持
Pragma: no-cache # 兼容 HTTP/1.0
十二、工具和调试
12.1 cURL 示例
bash
复制代码
# 包含完整请求头
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer token123" \
-H "User-Agent: MyApp/1.0.0" \
-d '{"key":"value"}' \
https://api.example.com/endpoint
# 查看原始请求头
curl -v https://api.example.com
12.2 JavaScript Fetch API
javascript
复制代码
const response = await fetch('/api/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`,
'X-Request-ID': generateUUID(),
'Accept': 'application/json',
'Cache-Control': 'no-cache'
},
body: JSON.stringify(data)
});
十三、总结表格
类别 |
关键请求头 |
主要用途 |
必需头 |
Host, User-Agent |
基础请求标识 |
内容协商 |
Accept, Accept-Encoding |
客户端能力声明 |
缓存控制 |
If-Modified-Since, Cache-Control |
缓存策略控制 |
认证安全 |
Authorization, Cookie |
身份验证和会话 |
CORS |
Origin, Access-Control-Request-* |
跨域请求处理 |
性能优化 |
Save-Data, Link |
网络和资源优化 |
自定义 |
X-API-Key, X-Request-ID |
应用特定功能 |
正确使用 HTTP 请求头对于构建高效、安全、可维护的 Web 应用至关重要。应根据具体需求选择合适的请求头,并遵循安全最佳实践。
相关文献
【nginx知识】弄懂nginx看这一篇文章就够了
【Nginx知识】nginx日志配置详解
【服务器知识】nginx配置负载均衡完全解读