Header 分析:请求头与响应头的完整解读
为什么要关注 Header
HTTP Header 承载了比请求体更多的元信息。很多调试场景中,问题的根源就在 Header 里——比如 Cookie 过期导致登录态丢失、Content-Type 不匹配导致服务端拒绝处理、Cache-Control 设置不当导致数据没有更新。
请求头常见字段
在请求标签页的 Header 区域,你会看到类似这些字段:
| 字段 | 示例 | 含义 |
|---|---|---|
| User-Agent | Mozilla/5.0 ... | 客户端标识,App 会伪装或自定义 UA |
| Content-Type | application/json | 请求体格式,服务端据此解析 Body |
| Content-Length | 1234 | 请求体大小(字节) |
| Authorization | Bearer eyJhbG... | 身份认证 token |
| Cookie | session_id=abc123... | 会话标识 |
| Referer | https://example.com/page | 请求来源页面 |
| Host | api.example.com | 目标服务器域名 |
| Accept | application/json | 客户端期望的响应格式 |
| Accept-Encoding | gzip, br | 客户端支持的压缩格式 |
| X-Requested-With | XMLHttpRequest | 部分老服务端用来区分 AJAX 请求 |
重点关注:Authorization 和 Cookie——这两个字段决定了请求能不能通过身份验证。如果你抓的某个接口一直返回 401 或 403,先检查这两个字段。
响应头常见字段
响应头由服务器返回,包含了处理和展示响应的关键信息:
| 字段 | 示例 | 含义 |
|---|---|---|
| Content-Type | application/json; charset=utf-8 | 响应体格式和编码 |
| Content-Length | 5678 | 响应体大小 |
| Cache-Control | max-age=3600 | 缓存策略 |
| Set-Cookie | token=xyz... | 服务端下发的新 Cookie |
| Location | https://new-url.com | 重定向目标(3xx 响应) |
| Access-Control-Allow-Origin | * | CORS 跨域配置 |
| Server | nginx/1.18 | 服务器类型和版本 |
重点关注:Set-Cookie——登录后服务端通过这个字段下发 session,后续请求的 Cookie 就来自这里。如果你调试「登录态丢失」问题,就是看这个字段有没有正确下发、客户端有没有正确保存。
Header 的两种视图
httpCanary 提供了两种查看 Header 的方式:
- 表格视图——以 Key / Value 两列展示,清晰直观,适合逐字段查看
- 原始视图——按 HTTP 协议格式原样展示,适合复制或和抓包工具的原始输出对比
在请求详情页切换到 Header 区域后,可以在右侧或顶部找到视图切换按钮。
用 Header 解决实际问题
问题:接口返回 302 重定向但客户端没有跳转
检查响应头里的 Location 字段——可能是一个内网地址或已经失效的 URL。同时检查请求头里的 User-Agent——有些服务端会根据 UA 返回不同的重定向目标。
问题:明明请求参数正确,服务端却返回「请先登录」
看请求头里的 Cookie 或 Authorization 字段——要么根本没带上(客户端漏发了),要么值已经过期了(时间戳或签名不对)。
问题:服务端返回的 JSON 客户端解析失败
先看响应头的 Content-Type——是不是正确的 application/json。如果是 text/html,说明服务端返回的其实是一个 HTML 错误页面,不是 JSON 数据。
问题:想让客户端获取最新数据但总是拿到缓存
检查响应头的 Cache-Control——如果有 max-age=xxx 或者 no-cache 标记,客户端可能在走本地缓存而不是发真实请求。