首页/网络/协议速查/TRACE 回显诊断
HTTP 方法与状态码91 条

TRACE 回显诊断

沿请求路径回显收到的消息(Via/Message/HTTP 头等),用于诊断代理链路上的消息改写。

协议速查网络更新于 2026-10-13

TRACE 是什么

TRACE 是 HTTP 标准的诊断方法:服务器把收到的请求原样回显在响应体里,通常还带上 Via、Message 等描述中转节点的头字段。它的用途是观察请求穿过代理、网关、负载均衡时被改成了什么样,属于链路自检手段,而不是业务接口。

为什么几乎都被禁用

浏览器历史上存在配合 TRACE 的跨站追踪缺陷,攻击者可以借它读到带凭据的请求内容,于是主流服务器与网关改为默认关闭。Apache 默认 TraceEnable off,Nginx 本身不实现 TRACE,云负载均衡多数直接返回 405;现代替代方案是看 Via 头、抓包或用带详细日志的反向代理。

基本信息

方法语义安全且幂等,不修改资源
规范RFC 9110 第 9.3.8 节
典型响应200 回显请求内容;405 表示已被禁用
相关头Via、Max-Forwards、Content-Type: message/http
默认状态Apache 关闭、Nginx 不支持

典型使用场景

  • 排查请求经过多级代理后被改写的头字段,例如 Host 或认证头被替换
  • 验证网关是否正确响应 OPTIONS/TRACE 这类探测方法
  • 安全评估时确认目标没有开启该诊断能力
  • 内网受控环境做链路自检,确认每一跳的中间节点都正确追加了 Via

探测与读取回显

探测与读取回显
curl -si -X TRACE https://www.example.com/        # 观察状态行
# HTTP/1.1 405 Method Not Allowed                  # 多数公网站点的实际结果
curl -si -X TRACE --max-redirs 0 http://10.0.0.9/  # 内网应用服务器可回 200
# 受控环境用 Max-Forwards 限制跳数,便于定位是哪一跳改写了请求
curl -si -X TRACE -H 'Max-Forwards: 0' http://proxy.internal/ | head -20

常见响应与含义

响应含义下一步
200 带 message/http服务器实现了回显仅内网保留,公网应关闭
405 Method Not Allowed已被服务器禁用属预期结果,无需处理
501 Not Implemented服务器不识别该方法同上,多见于精简实现
403 Forbidden被前置网关或 WAF 拦截查 WAF 规则与访问日志
TRACE 与浏览器历史缺陷组合可形成跨站追踪:攻击者借回显读到带 Cookie 的请求内容。只要是面向公网的服务,保持关闭即可,不要为了排障长期开启。
需要观察链路改写时,更安全的做法是看响应头里的 Via、X-Forwarded-For,配合 Nginx 的调试日志或抓包,不必开启 TRACE。

易错点

  • 为排查链路问题临时开启 TRACE 后忘记关闭,长期留下跨站追踪攻击面
  • 反向代理自己应答 TRACE,不回源站,看到 200 就误以为后端也支持
  • 把 405 当成服务异常反复排查,实际是服务器按安全默认值禁用了该方法
  • 只放行 OPTIONS 却忘记确认 TRACE 是否被单独策略放开,不同网关实现不一致

数据来源与参考

  • RFC 9110 §9.3.8 TRACE
  • Apache mod_core TraceEnable 指令

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌