常见 HTTP 头字段参考
HTTP
HTTP
网络
请求头
响应头
HTTP 请求头、响应头、通用与实体头字段速查表,含 Content-Type、Cache-Control、CORS、Cookie 与安全响应头的取值说明和常见踩坑点。
常见 HTTP 头字段参考
HTTP 头字段是「键: 值」形式的元数据,Content-Type、Cache-Control 这类不区分方向的称为通用头 / 实体头,其余按出现在请求还是响应中分为请求头与响应头。字段名大小写不敏感,但习惯上使用 Kebab-Case。
一、通用与实体头
| 头字段 | 示例 | 说明 |
|---|---|---|
Content-Type | application/json; charset=utf-8 | 消息体的媒体类型与字符集,必须与实际内容一致,否则后端解析失败(如 415) |
Content-Length | 1024 | 消息体字节数,与分块传输 Transfer-Encoding: chunked 互斥 |
Content-Encoding | gzip / br | 消息体使用的压缩编码,br 是 Brotli,压缩率通常优于 gzip |
Content-Language | zh-CN | 消息体面向的自然语言 |
Content-Location | /posts/1 | 消息体对应的资源地址 |
Cache-Control | max-age=3600, no-store | 缓存策略,优先级高于 Expires,请求与响应都可使用 |
Connection | keep-alive / close | 控制连接是否复用;HTTP/2 之后该字段被禁用 |
Date | Wed, 21 Oct 2026 07:28:00 GMT | 消息生成时间,格式必须是 IMF-fixdate |
Via | 1.1 varnish | 记录消息经过的代理链路,便于排查多级代理 |
Trailer | Expires | 声明分块传输中位于末尾的头部字段名 |
二、请求头
| 头字段 | 示例 | 说明 |
|---|---|---|
Host | www.example.com:443 | 目标主机与端口,HTTP/1.1 起为必填,是虚拟主机与 SNI 路由的依据 |
User-Agent | Mozilla/5.0 ... | 客户端标识,可被伪造,不要用于安全判断 |
Accept | text/html,application/json;q=0.9 | 期望的响应媒体类型,q 表示权重 |
Accept-Encoding | gzip, deflate, br | 客户端支持的压缩编码 |
Accept-Language | zh-CN,zh;q=0.9,en;q=0.8 | 期望的自然语言,可用于内容协商 |
Authorization | Bearer <token> | 携带认证凭证,常见方案有 Basic、Bearer、Digest |
Cookie | sid=abc; theme=dark | 浏览器自动携带的 Cookie,多个键值以 ; 分隔 |
Referer | https://example.com/list | 来源页面地址(注意拼写就是少一个 r),也用作防盗链 |
Origin | https://example.com | 请求来源的协议 + 主机 + 端口,CORS 与 CSRF 校验依赖它(不含路径) |
Range | bytes=0-1023 | 请求资源的某个区间,返回 206,用于断点续传与视频拖动 |
If-Modified-Since | Wed, 21 Oct 2026 07:28:00 GMT | 配合 Last-Modified 做协商缓存,未变化返回 304 |
If-None-Match | "33a64df5" | 配合 ETag 做协商缓存,优先级高于 If-Modified-Since |
If-Match | "33a64df5" | 乐观锁:ETag 不一致时返回 412,常用于防止并发覆盖 |
X-Requested-With | XMLHttpRequest | 传统上用于识别 Ajax 请求,现多由 CORS 取代 |
X-Forwarded-For | 203.0.113.7, 10.0.0.1 | 记录原始客户端 IP 与代理链,必须由可信代理设置,否则可被伪造 |
X-Forwarded-Proto | https | 记录原始请求协议,用于在代理后拼装正确的重定向地址 |
X-Real-IP | 203.0.113.7 | Nginx 常用,仅保存直接前一个客户端 IP |
Priority | u=0, i | 声明资源的加载优先级,配合 Link: rel=preload 使用 |
Sec-Fetch-Site | same-origin | 现代浏览器标注请求与目标站点的关系,可用于轻量 CSRF 防护 |
Sec-CH-UA | "Chromium";v="131" | 客户端提示(Client Hints),需服务端通过 Accept-CH 声明后浏览器才会发送 |
三、响应头
| 头字段 | 示例 | 说明 |
|---|---|---|
Location | /posts/1 | 重定向目标或新创建资源地址,配合 201、301、302、307、308 使用 |
Set-Cookie | sid=abc; HttpOnly; Secure; SameSite=Lax | 下发 Cookie;属性建议同时带上 HttpOnly、Secure、SameSite |
ETag | "33a64df5" | 资源版本标识,配合 If-None-Match 做协商缓存 |
Last-Modified | Wed, 21 Oct 2026 07:28:00 GMT | 资源最后修改时间,精度为秒 |
Expires | Wed, 21 Oct 2026 07:28:00 GMT | 绝对过期时间,被 Cache-Control: max-age 取代 |
Age | 3600 | 该响应在缓存中已存在的时间(秒) |
Retry-After | 120 | 告知客户端多久后重试,配合 429、503 使用 |
Vary | Accept-Encoding, Origin | 声明缓存键应包含哪些请求头,CORS 场景务必带上 Origin |
Server | nginx | 服务端软件标识,出于安全考虑常被隐藏或改写 |
Link | </style.css>; rel=preload; as=style | 资源提示,可提前预加载、预连接(配合 103 Early Hints) |
Content-Disposition | attachment; filename="a.pdf" | 控制内容是内联展示还是下载,并指定文件名 |
WWW-Authenticate | Bearer realm="api" | 与 401 搭配,说明应使用何种认证方案 |
Proxy-Authenticate | Basic realm="proxy" | 与 407 搭配,说明代理认证方案 |
Accept-Ranges | bytes | 声明服务端支持范围请求,客户端才会发起 Range |
Alt-Svc | h3=":443"; ma=86400 | 声明可用的替代服务,常用于 HTTP/3 升级 |
四、安全相关响应头
这几项是线上站点体检的高频项,建议在 Nginx 或应用层统一设置。
| 头字段 | 推荐值 | 作用 |
|---|---|---|
Strict-Transport-Security | max-age=31536000; includeSubDomains | 强制后续访问走 HTTPS,只在 HTTPS 响应中生效 |
Content-Security-Policy | default-src 'self' | 限制可加载的脚本 / 样式 / 图片来源,是 XSS 的主要缓解手段 |
X-Content-Type-Options | nosniff | 禁止浏览器嗅探 MIME 类型,避免把文本当脚本执行 |
X-Frame-Options | SAMEORIGIN | 防止被 iframe 嵌套,降低点击劫持风险(已被 CSP 的 frame-ancestors 部分取代) |
Referrer-Policy | strict-origin-when-cross-origin | 控制跨域跳转时携带多少来源信息 |
Permissions-Policy | geolocation=(), camera=() | 按来源限制浏览器特性权限 |
Cross-Origin-Opener-Policy | same-origin | 隔离窗口上下文,配合 COEP 才能启用 SharedArrayBuffer |
Cross-Origin-Embedder-Policy | require-corp | 要求跨域资源显式授权(CORS 或 CORP)后加载 |
Cross-Origin-Resource-Policy | same-site | 控制资源可被哪些站点加载,防止被跨站盗用 |
五、CORS 相关响应头
跨域请求由浏览器自动发起 OPTIONS 预检,服务端需返回下列头部才能放行。
| 头字段 | 示例 | 说明 |
|---|---|---|
Access-Control-Allow-Origin | https://app.example.com | 允许的来源,通配 * 与携带凭证的请求不能同时使用 |
Access-Control-Allow-Methods | GET,POST,PUT,DELETE | 预检响应中声明允许的方法 |
Access-Control-Allow-Headers | Content-Type,Authorization | 预检响应中声明允许携带的请求头 |
Access-Control-Allow-Credentials | true | 允许携带 Cookie 与认证头,此时 Allow-Origin 必须是具体来源 |
Access-Control-Expose-Headers | X-Total-Count | 允许前端 JS 读取的自定义响应头 |
Access-Control-Max-Age | 86400 | 预检结果的缓存秒数,减少 OPTIONS 请求数量 |
六、常见踩坑点
Content-Type与Content-Length不一致:多见于代理改写了响应体,导致前端拿到半截 JSON。Cache-Control: no-store与no-cache不同:前者完全不缓存,后者缓存但每次必须回源校验。- CORS 报错先看
Vary: Origin:缺少它时 CDN / 缓存可能把 A 站的Allow-Origin返回给 B 站。 X-Forwarded-For可以伪造:取客户端真实 IP 时要信任最右侧由自有代理写入的那一段,或使用X-Real-IP。Set-Cookie的SameSite=None必须同时加Secure,否则浏览器会直接丢弃该 Cookie。Cookie体积有限:单条约 4KB,同域总量约 50 条,超限会触发 431。