407 和 401 不同
RFC 9110 规定,代理用 407 挑战客户端,并在 Proxy-Authenticate 中给出至少一种适用的认证挑战;客户端随后可通过 Proxy-Authorization 提供凭据。401 则面向目标服务的认证,两者不能混用。
| 状态 | 认证对象 | 关键响应头 |
|---|---|---|
| 401 | 目标服务 | WWW-Authenticate |
| 407 | 代理服务器 | Proxy-Authenticate |
五步排查顺序
- 确认请求确实经过预期代理,而不是系统中的另一层代理。
- 检查代理主机、端口和协议是否匹配。
- 查看 407 响应中的认证方案,但共享日志前先脱敏。
- 确认客户端支持该方案,凭据未过期、未被空格或特殊字符破坏。
- 用最小 curl 测试复现,再回到浏览器或应用检查各自配置。
常见配置错误
把代理凭据放在目标网站的 Authorization 中不能解决 407;把网站账号当作代理账号也不行。URL 中的特殊字符需要由客户端正确编码,最稳妥的方式是使用客户端专门的代理用户名和密码字段。
如果服务采用 IP 白名单,出现 407 也可能说明请求没有从已授权出口到达,或者实际接入的是另一套需要凭据的代理节点。
不要无限重试认证失败
认证失败通常不是瞬时网络故障。持续重试可能触发锁定、放大日志噪声或造成额外负载。记录一次失败的时间、代理端点、认证方案和匿名化账号标识,然后暂停并核对配置。
修复后的验收
至少验证一次正确凭据成功、一次错误凭据得到预期失败、一次无凭据得到预期挑战;同时确认日志不包含明文密码或完整认证头。若通过共享出口,还应验证撤销权限后访问确实被拒绝。
常见问题
407 是目标网站拒绝访问吗?
通常不是。407 是代理服务器要求认证;目标网站自身的认证挑战通常是 401。
代理密码正确为什么仍然 407?
可能是认证方案不受客户端支持、用户名格式错误、特殊字符编码问题、连接到了错误端口,或服务实际使用 IP 白名单。
遇到 407 可以不断重试吗?
不建议。认证错误通常不会靠重试恢复,应先暂停并核对配置,避免锁定或额外负载。
继续阅读
主要参考资料
资料最后复核:2026-09-05。外部文档可能更新,操作前请核对来源页面当前版本。