当前位置: 首页 > 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: </style.css>; 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: </critical.css>; 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.dtcms.com/a/418157.html

相关文章:

  • AbMole| ABDP 493/503( M9850;中性脂滴荧光探针)
  • QML核心概念:用户输入与布局管理
  • 在原备案号下增加新网站微信公众平台是什么
  • AI智能体实战开发教程(从0到企业级项目落地):62节全完结,助力金九银十升职加薪!
  • 【网络编程】套接字入门:网络字节序与套接字种类剖析
  • 【Linux】Linux下的静态链接的底层逻辑
  • 2、Lombok核心注解详解:@Getter、@Setter、@Data 等基础注解全面解析
  • 兴力网站建设wordpress文章类型模板
  • springboot高校教务管理系统设计与实现(代码+数据库+LW)
  • Vala 编程语言高级特性-具有语法支持的方法
  • JavaEE初阶4.0
  • 医疗编程AI技能树与培训技能树报告(国内外一流大学医疗AI相关专业分析2025版,上)
  • 【IEEE出版 | 高录用、稳定检索】第七届信息与计算机前沿技术国际学术会议(ICFTIC 2025)
  • 我爱学算法之—— 模拟(上)
  • 白云做网站网店怎么注册开网店
  • 有了域名和主机怎么做网站erp软件是什么软件
  • 大数据毕业设计选题推荐-基于大数据的青光眼数据可视化分析系统-大数据-Spark-Hadoop-Bigdata
  • 数据可视化 | 热力图Heatmap绘制Python代码 相关性矩阵学术可视化
  • C#对称加密(AES)的简单代码
  • AR眼镜在安防领域人脸识别技术方案|阿法龙XR云平台
  • 【传奇开心果系列】基于Flet实现的第三次大的升级优化版语音播报成语接龙小游戏V3.0.1特色和实现原理深度解析
  • 【Qt】输入类控件2——SpinBox,DateEdit,TimeEdit,Dial,Slider
  • activemq延迟消息变成实时收到了?
  • 重庆市住房和城乡建设部网站中山人才招聘网官网
  • 如何构建有效的需求知识库?如何让你的AI用它来评审新需求?
  • HTML 和 Streamlit ,到底哪个好
  • 数据结构 之 【图的遍历与最小生成树】(广度优先遍历算法、深度优先遍历算法、Kruskal算法、Prim算法实现)
  • 胶州做网站的做网站设计有哪些网页
  • 开源 C# 快速开发(十)通讯--http客户端
  • 如何用 ShedLock 让 Spring Boot 的定时任务在多实例环境下只执行一次