当前位置: 首页 > news >正文

【服务器知识】HTTP 请求头信息及其用途详细说明 - 详解

HTTP 请求头信息及其用途详细说明

  • HTTP 请求头信息及其用途详细说明
    • 一、基础请求头
      • 1.1 必需请求头
    • 二、内容协商头
      • 2.1 内容类型协商
      • 2.2 质量值 (q-value) 语法
    • 三、缓存控制头
      • 3.1 缓存验证头
      • 3.2 缓存行为控制
    • 四、连接控制头
      • 4.1 连接管理
    • 五、认证和安全头
      • 5.1 身份认证头
      • 5.2 安全相关头
    • 六、请求体相关头
      • 6.1 内容描述头
      • 6.2 范围请求头
    • 七、CORS 和跨域头
      • 7.1 简单请求头
      • 7.2 预检请求头
    • 八、性能优化头
      • 8.1 资源提示头
      • 8.2 网络条件头
    • 九、自定义和应用头
      • 9.1 常见自定义头
    • 十、完整请求示例
      • 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 必需请求头

请求头格式示例用途说明
HostHost: api.example.com必需头,指定请求的目标服务器域名和端口
User-AgentUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)标识客户端软件信息,用于统计和兼容性处理
AcceptAccept: 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
  • 数值越高优先级越高

三、缓存控制头

3.1 缓存验证头

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秒的缓存

四、连接控制头

4.1 连接管理

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 身份认证头

Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Cookie: sessionid=abc123; user_prefs=dark_mode
Proxy-Authorization: Basic dGVzdDp0ZXN0
请求头认证方案格式
AuthorizationBearer TokenBearer <token>
AuthorizationBasic AuthBasic 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
请求头安全用途注意事项
OriginCORS 请求源检查同源策略关键头
Referer请求来源页面可能泄露敏感信息
X-Requested-With标识 AJAX 请求CSRF 防护参考
X-CSRF-TokenCSRF 令牌自定义防护头

六、请求体相关头

6.1 内容描述头

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 和跨域头

7.1 简单请求头

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预检请求声明自定义头

八、性能优化头

8.1 资源提示头

Link: ; rel=preload; as=style
Prefer: return=representation, wait=100
Early-Data: 1
请求头优化类型效果
Link资源预加载提前加载关键资源
Prefer服务器行为偏好控制响应处理方式
Early-Data0-RTT 数据TLS 1.3 0-RTT 优化

8.2 网络条件头

Save-Data: on
Device-Memory: 4
Downlink: 1.5
ECT: 4g
请求头客户端能力服务器优化策略
Save-Data省流量模式返回压缩内容
Device-Memory设备内存调整资源大小
Downlink下行带宽调整传输策略

九、自定义和应用头

9.1 常见自定义头

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-KeyAPI 密钥认证随机字符串
X-Request-ID请求追踪UUID
X-Forwarded-For真实客户端 IPIP 地址链
X-Forwarded-Proto原始协议https

十、完整请求示例

10.1 REST API 请求示例

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]

十一、请求头最佳实践

11.1 安全性最佳实践

# 好的实践
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

十二、工具和调试

12.1 cURL 示例

# 包含完整请求头
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身份验证和会话
CORSOrigin, Access-Control-Request-*跨域请求处理
性能优化Save-Data, Link网络和资源优化
自定义X-API-Key, X-Request-ID应用特定功能

正确使用 HTTP 请求头对于构建高效、安全、可维护的 Web 应用至关重要。应根据具体需求选择合适的请求头,并遵循安全最佳实践。

相关文献

【nginx知识】弄懂nginx看这一篇文章就够了
【Nginx知识】nginx日志配置详解
【服务器知识】nginx配置负载均衡完全解读

http://www.jsqmd.com/news/12803/

相关文章:

  • [GenAI] 大模型微调
  • 2025年10月气柱袋厂家最新推荐排行榜,缓冲包装气柱袋,防震气柱袋,充气气柱袋公司推荐!
  • [GenAI] LoRA微调
  • 2025年10月保洁公司最新权威推荐榜:专业清洁与高效服务的品质之选
  • 2025年10月粉末涂料厂家最新推荐排行榜,环氧粉末涂料,聚酯粉末涂料,丙烯酸粉末涂料,耐候性粉末涂料公司推荐
  • 基于单片机的汽车防碰撞刹车系统(论文+源码) - 实践
  • git submodule
  • 2025年10月确有专长培训机构最新推荐榜单:专业课程与高通过率口碑之选
  • 有源探头DC与RMS参数详解:选型与应用指南
  • Objective-C Runtime 中的关联对象(Associated Object)方法
  • 2025年10月无锡公考培训机构最新权威推荐榜单:专业师资与高通过率口碑之选
  • 2025年10月防腐木厂家最新推荐排行榜,专业生产户外景观木材,品质卓越值得信赖!
  • 数据敏感型企业为何优选吱吱企业即时通讯?其私有化部署优势详解
  • AIVILIZATION相关文件记录
  • 2025年10月上海门头清洗服务公司最新权威推荐榜:专业清洁与高效服务口碑之选
  • python实现全端口扫描
  • 详细介绍:如何分析软件需求中的DFX需求?
  • 2025年10月环氧板定制厂家最新推荐排行榜:专业定制与优质服务的口碑之选!
  • 3D Gaussian Splatting理论详解 - 教程
  • 2025年10月点胶机厂家最新推荐排行榜,自动点胶机,桌面点胶机,三轴点胶机,高精度点胶机公司推荐!
  • 在运维工作中,如何批量将当前目录下所有的 .tar 镜像文件通过 docker load -i 导入到本地 Docker 环境中,并显示进度和结果。
  • 20232315 2025-2026-1 《网络与系统攻防技术》 实验一实验报告
  • ffmpeg源码分析:avformat_open_input()打开媒体流
  • 01_数据库基础知识
  • 2025年10月农机带厂家最新推荐排行榜,农业机械传动带,收割机皮带,拖拉机皮带,耐用高效品质之选!
  • 2025年10月清洗机厂家最新权威推荐榜:高压清洗机,超声波清洗机,工业清洗机,家用清洗机品牌精选!
  • 2025年10月恒温恒湿系统厂家最新推荐榜单,精加工车间/厂房/美术馆/仓库/计算机房/档案室/工业/工厂车间恒温恒湿系统公司推荐
  • #pragma 和某些编译器指令
  • 2025年城市智能候车亭厂家推荐榜:公交/智能/不锈钢/铝型材/镀锌钢/氟碳漆/仿古/港湾式/光伏/太阳能候车亭厂家推荐,三大优质厂商深度解析
  • 2025年10月恒温恒湿系统厂家最新推荐榜单,精加工车间/厂房/美术馆/仓库/计算机房/档案室恒温恒湿系统公司推荐