HTTP 请求头速查
60+ 常用请求/响应头速查:用途、示例值与安全要点,按名称/方向/分类实时过滤,排查接口问题不再翻文档。
| HEADER | 方向 | 分类 | 说明 | 示例 |
|---|---|---|---|---|
| Authorization | req | 认证 | 请求凭据:Basic / Bearer / Digest 等 scheme | Bearer eyJhbGciOi… |
| Proxy-Authorization | req | 认证 | 向代理服务器提交凭据 | Basic dXNlcjpwYXNz |
| WWW-Authenticate | res | 认证 | 401 响应中声明可用的认证方式 | Bearer realm="api" |
| Cookie | req | 其他 | 回传服务器设置的 Cookie | sid=abc123; theme=dark |
| Set-Cookie | res | 其他 | 下发 Cookie,可带 HttpOnly / Secure / SameSite | sid=abc; HttpOnly; SameSite=Lax |
| X-Api-Key | req | 认证 | 事实标准的 API 密钥头(非 RFC) | ak_live_9f2e… |
| X-CSRF-Token | req | 认证 | CSRF 防护令牌(框架事实标准) | 9f8e7d6c-… |
| Cache-Control | both | 缓存 | 缓存策略总开关:max-age / no-cache / immutable 等 | public, max-age=31536000, immutable |
| Pragma | both | 缓存 | HTTP/1.0 遗留:no-cache 等效写法 | no-cache |
| ETag | res | 缓存 | 资源指纹,配合 If-None-Match 做 304 | "a3f2-19" |
| Expires | res | 缓存 | 绝对过期时间(HTTP/1.0 遗留,优先级低于 Cache-Control) | Wed, 21 Oct 2026 07:28:00 GMT |
| Age | res | 缓存 | 资源在代理缓存中已存活的秒数 | 24 |
| Vary | res | 缓存 | 参与缓存键的请求头,决定缓存是否可复用 | Accept-Encoding, User-Agent |
| Clear-Site-Data | res | 缓存 | 清除浏览器站点数据(缓存 / Cookie / 存储) | "cache", "cookies" |
| If-None-Match | req | 条件请求 | 携带上次 ETag,命中则 304 | "a3f2-19" |
| If-Modified-Since | req | 条件请求 | 按修改时间的条件请求(弱于 ETag) | Wed, 21 Oct 2026 07:28:00 GMT |
| If-Match | req | 条件请求 | 乐观锁:ETag 未变才执行(防丢失更新) | "a3f2-19" |
| If-Unmodified-Since | req | 条件请求 | 时间版乐观锁,未修改才执行 | Wed, 21 Oct 2026 07:28:00 GMT |
| If-Range | req | 条件请求 | Range 请求守卫:资源未变才返回分片 | "a3f2-19" |
| Content-Type | both | 内容 | 主体媒体类型及字符集 | application/json; charset=utf-8 |
| Content-Length | both | 内容 | 主体字节数(十进制) | 3481 |
| Content-Encoding | res | 内容 | 主体压缩编码:gzip / br / zstd | br |
| Content-Language | both | 内容 | 主体面向的语言受众 | zh-CN |
| Content-Disposition | res | 内容 | 内联展示或附件下载及文件名 | attachment; filename="a.pdf" |
| Content-Range | res | 内容 | 206 响应中的分片范围 | bytes 0-1023/146515 |
| Content-Location | res | 内容 | 主体内容的替代资源地址 | /docs/en/index.html |
| Accept | req | 内容 | 客户端可接受的媒体类型(内容协商) | application/json, text/*;q=0.8 |
| Accept-Encoding | req | 内容 | 客户端支持的压缩编码 | gzip, deflate, br |
| Accept-Language | req | 内容 | 客户端偏好的语言与权重 | zh-CN, en;q=0.8 |
| Accept-Ranges | res | 内容 | 声明支持 Range 分片请求 | bytes |
| Origin | req | CORS | 请求来源(协议+域+端口),CORS 与 POST 必带 | https://dev.miaokit.tech |
| Access-Control-Allow-Origin | res | CORS | 允许跨域读取的来源,* 或具体来源 | https://dev.miaokit.tech |
| Access-Control-Allow-Methods | res | CORS | 预检响应:允许的 HTTP 方法 | GET, POST, PUT |
| Access-Control-Allow-Headers | res | CORS | 预检响应:允许携带的请求头 | Content-Type, Authorization |
| Access-Control-Allow-Credentials | res | CORS | 允许跨域携带 Cookie(此时来源不能是 *) | true |
| Access-Control-Expose-Headers | res | CORS | 允许 JS 读取的额外响应头 | X-Request-Id |
| Access-Control-Max-Age | res | CORS | 预检结果的缓存秒数 | 86400 |
| Timing-Allow-Origin | res | CORS | 允许读取 Resource Timing 高精度耗时 | * |
| Host | req | 其他 | 目标主机与端口,HTTP/1.1 必带(虚拟主机路由依据) | dev.miaokit.tech |
| User-Agent | req | 其他 | 客户端软件标识 | Mozilla/5.0 … Chrome/130.0 |
| Referer | req | 其他 | 来源页地址(历史上拼写如此,规范已固化) | https://dev.miaokit.tech/ |
| Referrer-Policy | both | 其他 | 控制 Referer 发送策略 | strict-origin-when-cross-origin |
| Range | req | 条件请求 | 请求主体的字节分片(断点续传) | bytes=1048576- |
| Connection | both | 其他 | 连接管理:keep-alive / close | keep-alive |
| Upgrade | req | 其他 | 协议升级(配合 Connection,如 WebSocket) | websocket |
| Transfer-Encoding | res | 其他 | 分块传输编码(chunked) | chunked |
| Via | both | 其他 | 途经的代理 / 网关链路 | 1.1 example-proxy |
| Date | both | 其他 | 报文产生时间 | Wed, 21 Oct 2026 07:28:00 GMT |
| Expect | req | 其他 | 客户端期望(100-continue 大主体先探路) | 100-continue |
| X-Forwarded-For | req | 其他 | 反向代理记录的原始客户端 IP 链 | 203.0.113.7, 70.41.3.18 |
| X-Forwarded-Proto | req | 其他 | 反向代理记录的原始协议(http/https) | https |
| X-Request-Id | both | 其他 | 请求追踪 ID(链路排查用) | f4e1d2c3-0001 |
| X-Requested-With | req | 其他 | Ajax 时代标记(XMLHttpRequest),如今少用 | XMLHttpRequest |
| Idempotency-Key | req | 其他 | 幂等键:重试不重复扣款/建单 | b3c1d9e2-… |
| Server | res | 其他 | 服务器软件标识(建议收敛信息量) | openresty |
| Location | res | 其他 | 3xx 重定向目标或 201 新资源地址 | /en/t/json/ |
| Retry-After | res | 其他 | 503/429 后建议的重试等待 | 30 |
| Allow | res | 其他 | 405 响应中列出支持的方法 | GET, HEAD, PUT |
| Link | res | 其他 | 资源关系声明(分页 next/prev、预加载) | </page/2>; rel="next" |
| Refresh | res | 其他 | 非标准的定时刷新/跳转 | 5; url=/new |
| Strict-Transport-Security | res | 其他 | HSTS:强制 HTTPS 的时长与子域 | max-age=31536000; includeSubDomains |
| Content-Security-Policy | res | 其他 | CSP:脚本/样式等资源的加载白名单 | default-src 'self' |
| X-Content-Type-Options | res | 其他 | 禁止 MIME 嗅探(nosniff) | nosniff |
| X-Frame-Options | res | 其他 | 禁止被 iframe 嵌入(DENY/SAMEORIGIN,渐被 CSP frame-ancestors 取代) | DENY |
| Permissions-Policy | res | 其他 | 浏览器能力授权:摄像头/地理定位等 | camera=(), geolocation=(self) |
| X-RateLimit-Limit | res | 其他 | 限流窗口配额(常与 Remaining/Reset 三件套) | 600 |
| X-RateLimit-Remaining | res | 其他 | 窗口内剩余配额 | 587 |
| X-RateLimit-Reset | res | 其他 | 配额重置时间(秒或时间戳) | 1729900000 |
>_ 使用指南 · GUIDE
排查接口问题最常做的事就是盯着请求头看:认证为什么没过、缓存为什么没命中、跨域为什么被拦。这个速查表内置 60+ 常用头(含请求侧、响应侧与双向头),每个都带方向标注、分类、双语说明与示例值,支持按关键词、方向、分类三层实时过滤,数据内置本地、离线可用。
典型步骤:
- 关键词过滤:输入
auth、缓存、cors等任意关键词,头名前缀命中优先 - 按方向收窄:切到「请求」或「响应」只看单向头,
both双向头(如 Cache-Control)始终保留 - 按分类定位:认证 / 缓存 / 内容 / CORS / 条件请求 / 其他,排查某类问题时一键聚焦
- 看示例值:示例列给出可直接借鉴的真实写法(如
public, max-age=31536000, immutable)
>_ 常见问题 · FAQ
Q1 · Authorization 的 Bearer 写法有什么讲究?
格式是 Authorization: Bearer <token>,Bearer 与 token 之间一个空格,token 本身不带引号。Basic 认证则是 Basic base64(user:password)。调试 401 时先用这里核对格式,再查密钥本身——格式错误的报错往往是笼统的 "invalid credentials"。
Q2 · CORS 需要配置哪些响应头?
最小集是 Access-Control-Allow-Origin;带 Cookie 时还必须 Access-Control-Allow-Credentials: true 且来源不能是 *;预检(OPTIONS)请求需要 Access-Control-Allow-Methods 与 Access-Control-Allow-Headers;若前端要读自定义响应头(如 X-Request-Id),还需 Access-Control-Expose-Headers。
Q3 · Cache-Control 常用组合怎么写?
静态哈希资源:public, max-age=31536000, immutable;HTML 入口:no-cache(每次协商校验);敏感接口:no-store。max-age=0, must-revalidate 与 no-cache 语义近似但更严格。注意 no-cache 不是不缓存,而是每次使用前必须回源验证。
Q4 · X-Frame-Options 和 CSP frame-ancestors 用哪个?
两者都防点击劫持。X-Frame-Options 只有 DENY / SAMEORIGIN 两个值,是老标准;CSP 的 frame-ancestors 支持来源白名单且语义更全。现代浏览器里 CSP 优先,建议两者都发(老浏览器兜底),本工具的说明列同时标注了这一点。
Q5 · ETag、Last-Modified 用哪个做 304?
ETag 是内容指纹(强弱两种),Last-Modified 是秒级时间戳。优先 ETag:它能感知内容变化而 mtime 可能不可靠(部署后全部刷新)。两个都发时,If-None-Match 优先于 If-Modified-Since;条件请求命中返回 304 并省掉响应体。