HTTP 请求头信息及其用途详细说明 HTTP 请求头信息及其用途详细说明 一、基础请求头 二、内容协商头 2.1 内容类型协商 2.2 质量值 (q-value) 语法 三、缓存控制头 四、连接控制头 五、认证和安全头 六、请求体相关头 七、CORS 和跨域头 八、性能优化头 九、自定义和应用头 十、完整请求示例 10.1 REST API 请求示例 10.2 文件上传请求示例 十一、请求头最佳实践 11.1 安全性最佳实践 11.2 性能最佳实践 11.3 兼容性考虑 十二、工具和调试 12.1 cURL 示例 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 内容类型协商
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) 语法
Accept: text/html, application/xml; q=0.9, */*; q=0.8
质量值范围:0.0-1.0,默认 1.0 数值越高优先级越高 三、缓存控制头
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 缓存行为控制
Cache-Control: no-cache, no-store, max-age=0
Pragma: no-cache
指令 说明 no-cache
强制向服务器验证缓存 no-store
不存储任何缓存 max-age=0
缓存立即过期 max-stale=300
接受过期不超过300秒的缓存
四、连接控制头
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
五、认证和安全头
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 安全相关头
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 令牌 自定义防护头
六、请求体相关头
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 范围请求头
Range: bytes=0-499
If-Range: "abc123"
请求头 说明 使用场景 Range 请求部分内容 大文件下载、视频流 If-Range 条件范围请求 断点续传
七、CORS 和跨域头
GET /api/data HTTP/1.1
Origin: https://client.example.com
7.2 预检请求头
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 预检请求 声明自定义头
八、性能优化头
Link: ; 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 网络条件头
Save-Data: on
Device-Memory: 4
Downlink: 1.5
ECT: 4g
请求头 客户端能力 服务器优化策略 Save-Data 省流量模式 返回压缩内容 Device-Memory 设备内存 调整资源大小 Downlink 下行带宽 调整传输策略
九、自定义和应用头
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
十、完整请求示例
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 文件上传请求示例
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]
十一、请求头最佳实践
# 好的实践
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 性能最佳实践
# 启用压缩
Accept-Encoding: gzip, deflate, br
# 合理缓存
Cache-Control: no-cache # 动态数据
If-None-Match: "etag_value" # 条件请求
# 资源提示
Link: ; rel=preload; as=style
11.3 兼容性考虑
# 渐进增强
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
十二、工具和调试
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
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配置负载均衡完全解读