HTTP 请求头 / 响应头速查表
请求头、响应头、缓存、CORS 与安全头,含踩坑要点
共 71 个头字段
example.com:8080
目标主机与端口,HTTP/1.1 起必填;用于虚拟主机与 TLS SNI 路由
application/json; charset=utf-8
报文体的媒体类型与字符集,接口返回乱码多半是这里不对
要点: charset 不匹配也会让浏览器按错误编码解析;JSON 统一用 application/json 不带 charset 最稳
1024
报文体字节数(不是字符数),中文一个字常占 3 字节
gzip
报文体压缩算法,常见 gzip、br、zstd;压缩的是 length 之后的字节
要点: Content-Length 与 Content-Encoding 同时存在时,length 指的是压缩前的长度
zh-Hans
报文体面向的自然语言,多语言站点按此与 Accept-Language 协商
attachment; filename="report.csv"
控制浏览器是内联展示还是下载,并给出文件名
要点: 中文文件名要用 filename*=UTF-8 形式,只写 filename 会乱码
chunked
分块传输;用 chunked 时不能同时写 Content-Length
要点: 两个都写会被网关判定为请求走私,务必只留一个
keep-alive
连接管理,close 表示本次响应后断开,upgrade 用于协议升级
timeout=5, max=1000
复用连接的保活参数,空闲超时与最大请求数
1.1 varnish
记录经过的代理与网关,用于排查链路与缓存层级
Sun, 20 Sep 2026 03:30:00 GMT
报文生成时间,必须是 GMT / 格林尼治标准时间格式
text/html,application/json;q=0.9
客户端可接受的内容类型,可用 q 值表示优先级
要点: 后端按 Accept 返回 406 时,先看这里与响应的 Content-Type 是否对得上
gzip, br
客户端支持的压缩算法,服务端据此决定是否压缩
zh-CN,zh;q=0.9,en;q=0.8
客户端偏好的自然语言,多语言站点的语言判定依据
要点: 只按这个头切语言会让搜索引擎抓到同一 URL 的不同语言版本,要配 Vary
utf-8
客户端可接受的字符集,现代浏览器基本只报 utf-8
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
客户端标识,服务端据此做兼容与风控判断
要点: 服务端别用它做能力判断,现代浏览器会伪装,UA 里已无法区分平板与手机
https://example.com/list
来源页面地址,用于防盗链与来源统计
要点: 从 HTTPS 跳到 HTTP 时浏览器默认不带这个头,防盗链会误伤
bytes=0-1023
只请求资源的一部分字节,断点续传与视频拖动依赖它
要点: 服务端要回 206 而不是 200,回 200 说明没支持 Range
100-continue
发送大请求体前先问服务端是否接收,避免白传
要点: 网关不转发 Expect 时会卡到超时,上传大文件超时可去掉该头
websocket
要求升级协议,WebSocket 握手的关键头
要点: 反向代理要同时转发 Upgrade 与 Connection: upgrade,否则握手失败
for=203.0.113.1;proto=https
标准化的代理链路信息,X-Forwarded-* 的正式替代
203.0.113.1, 10.0.0.5
原始客户端 IP 链,代理逐跳追加,最左侧是客户端
要点: 客户端可以伪造这个头,取真实 IP 只能信任自定义或最后一跳的值
https
原始请求协议,反代后应用判断是否 HTTPS 的依据
203.0.113.1
Nginx 常用的单值客户端 IP 头,只保留一个地址
nginx/1.24.0
服务端软件标识,暴露版本号会给攻击者省事
要点: 生产环境建议隐藏或只写 nginx,用 server_tokens off
Basic realm="api"
告知客户端该用哪种认证方式,必须与 401 一起返回
要点: 返回 403 而不是 401 会让客户端不知道该弹认证框还是判定无权限
Basic realm="proxy"
代理要求认证,与 407 配套
https://example.com/new
重定向目标,与 3xx 状态码配套使用
要点: 相对路径在反代与子路径部署时容易指错,跨域名必须写绝对地址
120
告诉客户端多久后重试,秒数或 HTTP 日期
要点: 429 与 503 都该带它,否则客户端容易立刻重试把服务压垮
GET, POST, HEAD
该资源允许的请求方法,与 405 配套
bytes
声明支持范围请求,断点续传的前提
bytes 0-1023/4096
部分内容的区间与总长度,与 206 配套
<https://example.com/next>; rel="next"
声明关联资源,分页与预加载会用到
Express
框架指纹,建议关掉以减少信息暴露
*
允许哪些源读取 Performance 计时数据,跨域测速要用到
h3=":443"; ma=86400
声明同一资源的其他服务入口,HTTP/3 靠它被发现
public, max-age=3600
缓存策略总开关,no-store 完全不存,no-cache 要回源校验
要点: no-cache 不是不缓存,而是每次都要回源校验;想彻底不存要用 no-store
Sun, 20 Sep 2026 04:30:00 GMT
HTTP/1.0 的过期时间,优先级低于 Cache-Control
no-cache
HTTP/1.0 遗留头,只为兼容旧客户端,语义同 no-cache
"686897696a7c876b7e"
资源版本指纹,条件请求用它判断内容是否变化
要点: 多台服务器各算各的 ETag 会导致缓存频繁失效,集群要关掉或统一算法
Sat, 19 Sep 2026 12:00:00 GMT
资源最后修改时间,精度只到秒
"686897696a7c876b7e"
带上上次的 ETag 问服务端有没有变,没变回 304
要点: 协商缓存没生效时先看浏览器实际发的 If-None-Match 与响应 ETag 是否一致
Sat, 19 Sep 2026 12:00:00 GMT
按修改时间做条件请求,精度低但兼容性好
"686897696a7c876b7e"
要求资源版本一致才执行写操作,乐观锁的实现方式
要点: 更新接口不带它会丢更新,配合 412 使用
Sat, 19 Sep 2026 12:00:00 GMT
与 If-Match 同理但按时间判断,条件不满足回 412
3600
响应在缓存中已存活的秒数,与 max-age 一起判断是否过期
Accept-Encoding, Accept-Language
声明响应随哪些请求头变化,缓存必须按这些头分桶
要点: 漏写 Vary 会把压缩版发给不支持压缩的客户端,或让多语言版本互相串
https://app.example.com
请求发起方,浏览器自动带上且页面无法伪造
https://app.example.com
允许的跨域来源,写 * 就不能再带凭证
要点: 带 Cookie 时必须回显具体来源,回 * 浏览器会直接拦掉响应
GET, POST, PUT, DELETE
预检请求里允许的方法
Content-Type, Authorization
预检请求里允许的自定义请求头
要点: 自定义头不在这个列表里,预检直接失败,浏览器控制台只报 CORS 错误
true
是否允许携带 Cookie 与认证信息
要点: 设 true 后前端必须同时开 withCredentials,两边缺一个都拿不到数据
Content-Disposition
允许前端 JS 读取的响应头,默认只能读少数几个
要点: 下载文件名拿不到通常就是没暴露 Content-Disposition
600
预检结果可缓存多久,减少 OPTIONS 请求
PUT
预检请求里声明真正要用的方法,由浏览器自动生成
Authorization
预检请求里声明真正要用的自定义头
max-age=63072000; includeSubDomains; preload
强制浏览器此后只用 HTTPS 访问,防降级与 Cookie 劫持
要点: preload 一旦提交到浏览器预置列表就很难撤回,先用小 max-age 验证
default-src "self"; object-src "none"
内容安全策略,限定脚本、样式、图片等的加载来源,是防 XSS 的主力
要点: 先上 Content-Security-Policy-Report-Only 观察命中,写死再切正式头
SAMEORIGIN
是否允许被 iframe 嵌套,防点击劫持
要点: 与 CSP 的 frame-ancestors 同时存在时,后者优先
nosniff
禁止浏览器猜类型,防止把文本当脚本执行
strict-origin-when-cross-origin
控制跳转时带出多少来源信息
camera=(), geolocation=(self)
按功能开关浏览器能力,如摄像头、定位、麦克风
same-origin
隔离浏览上下文,是启用高精度计时与 SharedArrayBuffer 的前提
require-corp
要求所有嵌入资源都声明允许被嵌入
same-origin
声明资源只允许同源页面加载,防跨站读取
"cache", "cookies"
让浏览器清除本站缓存与 Cookie,退出登录时常用
要点: 只在 HTTPS 下生效,写错引号会静默失效
0
旧浏览器的 XSS 过滤器开关,现已废弃,建议直接设为 0
要点: 设为 1 反而会引入侧信道问题,现代做法是删掉它改用 CSP
这个工具不好用,或者遇到 bug?
去反馈