407 和 401 不同

RFC 9110 规定,代理用 407 挑战客户端,并在 Proxy-Authenticate 中给出至少一种适用的认证挑战;客户端随后可通过 Proxy-Authorization 提供凭据。401 则面向目标服务的认证,两者不能混用。

状态认证对象关键响应头
401目标服务WWW-Authenticate
407代理服务器Proxy-Authenticate

五步排查顺序

  1. 确认请求确实经过预期代理,而不是系统中的另一层代理。
  2. 检查代理主机、端口和协议是否匹配。
  3. 查看 407 响应中的认证方案,但共享日志前先脱敏。
  4. 确认客户端支持该方案,凭据未过期、未被空格或特殊字符破坏。
  5. 用最小 curl 测试复现,再回到浏览器或应用检查各自配置。

常见配置错误

把代理凭据放在目标网站的 Authorization 中不能解决 407;把网站账号当作代理账号也不行。URL 中的特殊字符需要由客户端正确编码,最稳妥的方式是使用客户端专门的代理用户名和密码字段。

如果服务采用 IP 白名单,出现 407 也可能说明请求没有从已授权出口到达,或者实际接入的是另一套需要凭据的代理节点。

不要无限重试认证失败

认证失败通常不是瞬时网络故障。持续重试可能触发锁定、放大日志噪声或造成额外负载。记录一次失败的时间、代理端点、认证方案和匿名化账号标识,然后暂停并核对配置。

修复后的验收

至少验证一次正确凭据成功、一次错误凭据得到预期失败、一次无凭据得到预期挑战;同时确认日志不包含明文密码或完整认证头。若通过共享出口,还应验证撤销权限后访问确实被拒绝。

常见问题

407 是目标网站拒绝访问吗?

通常不是。407 是代理服务器要求认证;目标网站自身的认证挑战通常是 401。

代理密码正确为什么仍然 407?

可能是认证方案不受客户端支持、用户名格式错误、特殊字符编码问题、连接到了错误端口,或服务实际使用 IP 白名单。

遇到 407 可以不断重试吗?

不建议。认证错误通常不会靠重试恢复,应先暂停并核对配置,避免锁定或额外负载。

继续阅读

主要参考资料

资料最后复核:2026-09-05。外部文档可能更新,操作前请核对来源页面当前版本。