| Host: example.com | 必须 | HTTP/1.1 唯一强制头,虚拟主机靠它分发 |
| User-Agent: Mozilla/5.0 … | 建议 | 客户端标识,不要用它做安全判断 |
| Accept: text/html, application/json | 内容协商 | 客户端可接受的类型,可带 q 权重 |
| Accept-Language: zh-CN,zh;q=0.9 | 内容协商 | 期望语言,服务端据此返回多语言 |
| Accept-Encoding: gzip, deflate, br | 压缩 | 支持的压缩算法,服务端回 Content-Encoding |
| Connection: keep-alive | 连接 | HTTP/1.1 默认复用;HTTP/2 忽略此头 |
| Content-Type: application/json | 请求体 | 描述请求体格式,缺失易导致解析失败 |
| Content-Length: 128 | 请求体 | 体字节数;分块传输时改用 Transfer-Encoding |
| Transfer-Encoding: chunked | 流式 | 长度未知时分块发送,常用于流式响应 |
| Expect: 100-continue | 大体 | 先问服务器是否接受,避免白传大包 |
| Referer: https://site/from | 来源 | 来源页;注意拼写本就是 Referer,可用 Referrer-Policy 控制 |
| Origin: https://a.com | 跨域 | CORS 与 POST 携带,服务端据此判断放行 |
| Cookie: a=1; b=2 | 状态 | 浏览器自动附带,同名 cookie 按域和路径排序 |
| Authorization: Bearer <token> | 认证 | 凭据头;Basic base64 仅适合 HTTPS |
| Authorization: Digest … | 认证 | 挑战-应答式,比 Basic 少暴露密码 |
| If-None-Match: "abc123" | 条件请求 | 配合 ETag,未变更返回 304 |
| If-Modified-Since: Wed, 21 Oct 2026 … | 条件请求 | 配合 Last-Modified,精度只到秒 |
| If-Match: "abc" | 并发控制 | PUT 时做乐观锁,不匹配返回 412 |
| Range: bytes=0-1023 | 断点续传 | 请求部分资源,成功返回 206 |
| Cache-Control: no-cache | 请求级 | 要求回源校验,不用本地缓存响应 |
| Pragma: no-cache | 兼容 | HTTP/1.0 遗留,仅 HTTPS 下兼容旧代理 |
| DNT: 1 | 隐私 | 禁止跟踪声明,多数站点已忽略 |
| Upgrade-Insecure-Requests: 1 | 升级 | 请求服务端优先返回 HTTPS 版本 |
| TE: trailers | 分块 | 接受分块尾部头,流式响应常用 |
| Max-Forwards: 10 | 跳转 | 限制 TRACE/OPTIONS 经代理的跳数 |
| X-Request-Id: uuid | 自定义 | 链路追踪 ID,服务端应原样回写到日志 |
| X-Forwarded-For: client, proxy1 | 代理 | 伪造成本低,只可信最后一跳或改用签名头 |
| X-Forwarded-Proto: https | 代理 | 告知后端原始协议,避免生成 http 回调地址 |
| Sec-Fetch-Site: same-origin | 浏览器 | 浏览器附带请求来源分类,可辅助防 CSRF |
| Priority: u=0, i | HTTP/2 起 | 声明资源优先级,服务器据此调度 |
| Server: nginx/1.27 | 信息 | 服务端软件,生产建议隐藏版本号 |
| Date: Wed, 21 Oct 2026 07:28:00 GMT | 时间 | 响应生成时间,必须 GMT 格式 |
| Content-Type: text/html; charset=utf-8 | 实体 | 响应体类型与字符集,优先级高于页面 meta |
| Content-Length: 3423 | 实体 | 字节数;开启压缩时是压缩后长度 |
| Content-Encoding: gzip | 实体 | 压缩算法,需与客户端 Accept-Encoding 匹配 |
| Content-Language: zh-CN | 实体 | 主体语言 |
| Content-Disposition: attachment; filename="a.pdf" | 下载 | 触发下载;中文名用 filename*=UTF-8''编码值 |
| Content-Range: bytes 0-1023/8000 | 分段 | 206 响应必须携带实际范围与总长 |
| Accept-Ranges: bytes | 能力 | 声明支持范围请求;none 表示不支持 |
| ETag: "675af34563dc" | 校验 | 资源版本标识,弱校验用 W/ 前缀 |
| Last-Modified: Wed, 21 Oct 2026 … | 校验 | 资源修改时间,配合条件请求 |
| Vary: Accept-Encoding, Origin | 缓存键 | 声明影响响应的请求头,缓存必须据此区分副本 |
| Location: /new/path | 重定向 | 3xx 跳转目标或 201 新建资源地址 |
| Retry-After: 120 | 限流 | 429/503 告知多久后重试,可写 HTTP 日期 |
| Allow: GET, HEAD, OPTIONS | 能力 | 该资源支持的方法,405 响应必须带 |
| Link: </style.css>; rel=preload | 提示 | 资源预加载/预连接提示,等价于 HTML link |
| Age: 300 | 缓存 | 响应在缓存中已存放的秒数 |
| Warning: 199 - "network disconnected" | 诊断 | 旧版缓存告警头,HTTP 缓存已弃用 |
| Set-Cookie: id=a3; HttpOnly; Secure; SameSite=Lax | 状态 | 写 Cookie,属性缺失会带来 XSS/CSRF 风险 |
| Server-Timing: db;dur=53 | 性能 | 服务端各阶段耗时,浏览器 DevTools 可见 |
| Refresh: 5;url=/next | 兼容 | 非标准跳转,应改用 301/302 或 meta refresh |
| Cache-Control: max-age=3600 | 强缓存 | 一小时内直接用本地副本,不发请求 |
| Cache-Control: no-cache | 协商缓存 | 每次回源校验,可用 304 复用副本 |
| Cache-Control: no-store | 不缓存 | 禁止任何存储,登录/支付页常用 |
| Cache-Control: must-revalidate | 严格 | 过期后必须回源,不允许返回过期副本 |
| Cache-Control: public, s-maxage=86400 | 共享缓存 | s-maxage 只作用于 CDN 等共享缓存 |
| Cache-Control: private, max-age=600 | 私有缓存 | 只允许浏览器缓存,CDN 不保存 |
| Cache-Control: immutable | 带指纹资源 | 声明内容永不变化,浏览器不再发起校验 |
| Cache-Control: max-age=31536000, immutable | 最佳实践 | JS/CSS 带 hash 文件名时的一年缓存策略 |
| Expires: Wed, 21 Oct 2027 07:28:00 GMT | HTTP/1.0 | 绝对过期时间,被 max-age 覆盖 |
| Last-Modified + ETag | 校验器 | ETag 更准但会击穿集群缓存,两者常并用 |
| Cache-Control: no-transform | 代理 | 禁止中间代理改写响应体(如压缩、图片优化) |
| Clear-Site-Data: "cache", "cookies" | 清理 | 要求浏览器清除站点数据,退出登录时用 |
| Access-Control-Allow-Origin: https://a.com | 放行来源 | 单个来源或 *;带凭据时不能写 * |
| Access-Control-Allow-Credentials: true | 允许带 Cookie | 必须与具体 Origin 同时出现 |
| Access-Control-Allow-Methods: GET, POST, PUT | 方法白名单 | 预检响应,声明允许的实际方法 |
| Access-Control-Allow-Headers: Content-Type, X-Token | 请求头白名单 | 预检响应,自定义头必须在此列出 |
| Access-Control-Request-Method: PUT | 预检请求 | 浏览器发起 OPTIONS 时携带 |
| Access-Control-Request-Headers | 预检请求 | 告知服务端将用到的自定义头 |
| Access-Control-Expose-Headers: X-Total-Count | 暴露响应头 | 默认 JS 只能读 6 个安全响应头 |
| Access-Control-Max-Age: 86400 | 预检缓存 | 缓存预检结果,减少 OPTIONS 往返 |
| Origin: null | 特殊来源 | 本地文件与沙箱 iframe 的来源,切勿回显放行 |
| Private-Network Access | 新规范 | 访问内网/本机地址需额外允许头,浏览器会预检 |
| 跨域用 JSONP / postMessage | 替代方案 | JSONP 只支持 GET 且有 XSS 风险,优先 CORS |
| Strict-Transport-Security: max-age=31536000; includeSubDomains | HSTS | 强制后续走 HTTPS,首次上线慎用长周期 |
| X-Content-Type-Options: nosniff | MIME | 禁止浏览器嗅探响应类型 |
| X-Frame-Options: DENY / SAMEORIGIN | 点击劫持 | 老浏览器方案,新方案用 CSP frame-ancestors |
| Referrer-Policy: strict-origin-when-cross-origin | 隐私 | 控制 Referer 泄露程度,建议显式设置 |
| Permissions-Policy: geolocation=() | 能力 | 关闭浏览器能力授权入口 |
| Content-Security-Policy: default-src 'self' | XSS | 资源来源白名单;报告模式用 Content-Security-Policy-Report-Only |
| Cross-Origin-Opener-Policy: same-origin | 隔离 | 隔离窗口引用,配合 COEP 才能开 SharedArrayBuffer |
| Cross-Origin-Embedder-Policy: require-corp | 隔离 | 只加载允许跨域嵌入的资源 |
| Cross-Origin-Resource-Policy: same-site | 资源 | 声明该资源可被谁跨源加载 |
| WWW-Authenticate: Bearer | 认证 | 401 响应说明可用的认证方案 |
| Keep-Alive: timeout=5, max=1000 | 连接 | HTTP/1.1 长连接复用参数 |