首页/网络/协议速查/305 Use Proxy 使用代理(已废弃)
HTTP 方法与状态码91 条

305 Use Proxy 使用代理(已废弃)

早期定义:要求客户端通过指定代理访问目标资源;因安全风险已被标准废弃,不得再使用。

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

305 是什么

305 Use Proxy 是 HTTP/1.1 早期定义的重定向码:服务器要求客户端通过指定代理访问目标资源,代理地址放在 Location 里。由于攻击者可以借此把客户端流量导向自己控制的代理,标准已明确将其废弃(RFC 9110 §15.4.6 注明不得使用),实现中不应再返回或依赖它。

基本信息

名称305 Use Proxy
类别3xx
旧规范RFC 2616 §10.3.6
现状RFC 9110 明确废弃,禁止使用
风险伪造代理地址可劫持流量
正确做法由客户端或系统显式配置代理

典型使用场景

  • 安全审计:流量里发现 305 应视为异常实现或攻击尝试
  • 老系统兼容性排查:确认客户端是否还在处理该码
  • 代理配置的正确做法参考:客户端侧显式配置
  • 协议历史理解:HTTP/1.1 早期重定向语义的演变
  • 客户端实现评审:确认自家 SDK 不会自动跟随 305
  • 事件响应:出现可疑响应头时的处置流程

正确做法与排查

正确做法与排查
# 正确做法:由客户端或系统显式配置代理,而不是接受服务端下发的 305
export https_proxy=http://proxy.internal:3128
curl -x http://proxy.internal:3128 https://example.com/     # 显式指定代理

# 排查:确认响应里到底出现了什么重定向码
curl -si https://example.com/ | head -5

代理相关的正确姿势

需求推荐做法不推荐
出网走代理客户端或系统环境变量配置依赖服务端返回 305
企业出口管控出口透明代理加证书管理自建私有机制
按域名分流PAC 或分流规则依赖 305
信任边界代理证书链可审计连接未知代理
305 存在被用于流量劫持的风险:客户端收到来源不明的 305 时,应按错误处理而不是自动连接 Location 指向的代理。
多数现代 HTTP 客户端(curl、浏览器、主流语言库)根本不实现 305,遇到时通常只当作未知的 3xx 处理。
代理配置的正确位置是客户端或系统侧,因为只有用户或运维能确认该代理是否可信。
若要统一管控出口,企业通常采用透明代理加证书管理的方式,而不是依赖服务端下发代理地址。
在日志里看到 305 时,优先确认是否为老中间件的历史行为,再评估是否存在主动攻击。

易错点

  • 在服务端返回 305 会让客户端行为不可预测:规范禁止使用,各客户端实现也各不相同
  • 实现 305 自动跟随等于把用户流量交给服务端指定的代理,属于典型的中间人风险面
  • 排查「访问异常」时忽略 305 的可能性:老设备或恶意脚本可能伪造该响应
  • 把 305 与 302 混为一谈会让排查方向跑偏:前者指向代理而不是目标地址
  • 客户端 SDK 静默忽略未知 3xx 又不记日志,会让这类问题在生产环境里完全不可见

数据来源与参考

  • RFC 9110 §15.4.6(废弃说明)
  • RFC 7231(原废弃记录)

相关工具

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