请求头总览是什么
请求头由若干「字段名与字段值」组成,用来告诉服务器关于这次请求、发起方能力与期望处理方式的信息。它们可以按用途归成几类:描述目标与路由、声明客户端能力、携带身份凭证、描述请求体、控制缓存与条件请求、说明来源。理解这些字段的分组与优先级,比孤立记住某个字段名有用得多——排障时往往是几个头部的组合决定了最终行为。
基本信息
| 语法 | 字段名、冒号与字段值,冒号后可有一个空格 |
|---|---|
| 规范依据 | 字段定义与消息元数据相关章节 |
| 大小写 | 旧版本不敏感,新版本要求统一小写 |
| 常见分类 | 路由、能力协商、凭证、请求体描述、缓存、来源 |
| 重复字段 | 多数可重复,语义由具体字段定义 |
典型使用场景
- 接口联调:核对请求头是否完整,排查认证与缓存问题
- 抓包分析:观察真实发出的头部,确认中间设备是否改写
- 安全加固:检查凭证类头部是否被写进访问日志
- 缓存排障:确认条件请求与校验值字段是否带上
- 多域名路由:确认目标主机字段与配置是否匹配
查看原始请求头
查看原始请求头
curl -sv https://example.com/ 2>&1 | sed -n '/> GET/,/^>/p' # 打印实际发出的请求行与头部
curl -si -H 'Accept: application/json' https://api.example.com/ # 手工加一个头部验证服务端行为
curl -sv -o /dev/null https://example.com/ 2>&1 | grep '^>' # 只看发出的方向最常用字段一览
| 字段 | 作用 |
|---|---|
| 目标主机 | 虚拟主机路由,旧版本必填 |
| 客户端标识与能力声明 | 说明客户端类型与可接受的内容格式 |
| 凭证类 | 身份证明与会话状态 |
| 请求体描述 | 内容类型与长度 |
| 缓存控制与条件请求 | 决定能否复用缓存与是否需要回源 |
| 来源类 | 跨域控制与来源统计 |
排查要点
- 请求头被中间设备改写是常见现象,排查时要对比客户端发出与服务端收到两份内容
- 新版本协议中字段名统一小写并压缩传输,不要按旧版本的写法去核对
- 凭证类头部必须在日志里脱敏,检查日志格式时优先确认这一点
字段名在旧版本里不区分大小写,但在新版本协议中必须全部小写,且不能随意增删。用工具对比不同协议的请求时,头部数量与形态都会变化,这是正常现象而不是配置错误。
同名字段出现多次时,取值结果由具体字段的规范决定,多数情况下不应简单拼接。手工构造请求时重复添加同一字段,会让服务端拿到与预期不同的值。