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

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

  • [HTTP 请求头信息及其用途详细说明](#HTTP 请求头信息及其用途详细说明)

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配置负载均衡完全解读

相关推荐
weixin_436525072 小时前
linux-RabbitMQ创建虚拟主机、用户、分配权限、标签
linux·运维·服务器·rabbitmq
心灵宝贝9 小时前
如何在 CentOS 7 上安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 文件
linux·运维·centos
云心雨禅9 小时前
WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
linux·服务器·数据库·缓存·memcached
鹿鸣天涯9 小时前
Kali Linux 2025.3 正式发布:更贴近前沿的安全平台
linux·运维·安全
奶茶树10 小时前
【Linux】基础指令
linux·服务器
CheungChunChiu11 小时前
在嵌入式 Linux 上配置 PulseAudio 默认输出设备的完整指南
linux·运维·ubuntu·audio·pulseaudio
胡耀超11 小时前
4、存储系统架构 - 从机械到闪存的速度革命
服务器·人工智能·架构·gpu·储存·闪存
std8602111 小时前
容器化入门:一文掌握Docker安装与核心概念
运维·docker·容器
qiqiqi(^_×)12 小时前
解决linux‘打开readme.md文件pycharm闪退’问题
linux·运维·pycharm