Proxy-Authorization 是什么
Proxy-Authorization 用来向代理服务器证明身份,作用对象是链路上的下一跳代理,而不是最终的目标站点。代理返回 407 并附上挑战信息后,客户端把凭证放进这个头发起重试。它与 Authorization 的区别正是消费对象:后者给源站看,前者给代理看,代理在转发前必须把它剥掉,不应当传递到源站。
基本信息
| 名称 | Proxy-Authorization |
|---|---|
| 作用 | 向代理层提供认证凭证 |
| 规范 | RFC 9110 §11.7.2 |
| 配套状态码 | 407 与 Proxy-Authenticate |
| 作用范围 | 仅当前这一跳代理 |
| 转发要求 | 代理必须剥离,不得传给源站 |
curl 指定代理认证
curl 指定代理认证
curl -si -x http://proxy.corp:3128 -U alice:secret https://example.com/
# 等价于给代理发送 Proxy-Authorization: Basic ...,仅发给代理
curl -si -x http://proxy.corp:3128 --proxy-header 'Proxy-Authorization: Basic dXNlcjpwYXNz' https://example.com/
# 观察 407 挑战内容
curl -si -x http://proxy.corp:3128 https://example.com/ | head -5两个认证头对比
| 头字段 | 谁校验 | 失败状态码 |
|---|---|---|
| Authorization | 目标源站 | 401 与 WWW-Authenticate |
| Proxy-Authorization | 链路上的代理 | 407 与 Proxy-Authenticate |
典型使用场景
- 企业出口代理:客户端出网必须先经过带认证的代理
- 排障 407:确认凭证对应的正是当前这一级代理,而不是更前或更后的一跳
- 多级代理链路:逐跳确认认证信息被正确消费与剥离
- 抓包审计:确认代理没有把凭证泄露给源站
- 自动化脚本配置:把代理凭证与业务凭证分开管理,避免混用
用明文 HTTP 访问代理时,该头里的凭证是明文传输;即使是 HTTPS 目标,通过 CONNECT 建立隧道的那一跳也通常是明文。代理凭证应与其他敏感凭据一样做最小化授权、定期更换,并避免写进共享脚本与日志。排查 407 时还要先确认请求是否真的经过代理:直连场景下出现 407,通常是客户端误把代理凭证头当普通请求头发了出去。多级链路下凭证只在当前跳生效,不会自动传给下一跳。