HTTPQUERY
English

407 Proxy Authentication Required

用法

收到 407 Proxy Authentication Required 错误时,客户端明白在通过代理访问所请求的资源之前,需要提供有效的登录凭据。这类似于 401 Unauthorized 响应,客户端使用相同的认证协议。

服务器返回 Proxy-Authenticate 头以指明允许的方法。

SEO 影响

像 Google 这样的搜索引擎不会索引返回 407 Proxy Authentication Required 状态的 URL。此前已被索引、如今返回该状态码的 URL 会从搜索结果中移除。

示例

客户端请求某个资源,服务器返回 407 Proxy Authentication Required,表明该资源处于代理保护之后。服务器表示支持 basic 授权。客户端使用 basic 认证协议,在 Proxy-Authorization 头中以 username:password 对作出响应。随后服务器传输所请求的资源。

初始请求

GET /documents/tech-news HTTP/1.1
Host: example.com

初始响应

HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: Basic realm="Documents"

下一次请求

GET /documents/tech-news HTTP/1.1
Host: example.com
Proxy-Authorization: Basic RXhhbXBsZTphaQ==

最终响应

HTTP/1.1 200 OK
Content-Type: application/pdf
Content-Length: 25000

<PDF document included in message body>

如何修复

407 Proxy Authentication Required 意味着代理服务器在转发请求之前需要有效的凭据。

检查响应中的 Proxy-Authenticate 头。此头指定了所需的认证方案(Basic、Digest、NTLM、Negotiate)。使客户端配置与期望的方法相匹配。用浏览器开发者工具或通过代理的 curl -v 检查该头。

在客户端配置代理凭据。在浏览器代理设置、应用配置或环境变量中设置代理的用户名和密码。对于命令行工具,将凭据嵌入代理 URL:

export HTTP_PROXY=http://user:pass@proxy:8080
export HTTPS_PROXY=http://user:pass@proxy:8080

对于编程式 HTTP 客户端,在 Proxy-Authorization 头中包含凭据。

核实代理的用户名和密码。不正确或过期的凭据对会触发此错误。与网络管理员确认这些值。NTLM 和 Kerberos 代理需要加入域的凭据。核实是否包含域前缀(如 DOMAIN\username)。

检查透明代理拦截。有些企业网络会将所有流量路由经过一个透明代理,而无需客户端显式配置。VPN 连接或网络策略变更会引入原本不存在的代理认证。检查系统代理设置(Windows:Internet 选项,macOS:系统设置 > 网络 > 代理,Linux:/etc/environment 或桌面代理设置)。

清除缓存的代理凭据。浏览器和操作系统会缓存代理认证令牌。密码更改后,陈旧的缓存凭据会导致反复出现 407 响应。清除凭据缓存(Windows 上的凭据管理器,macOS 上的钥匙串访问)。

核实代理是否允许目标域名。有些代理服务器会将访问限制在已批准的域名或 URL 类别。即使凭据有效,若目标被策略阻止,代理也会返回 407 以强制重新认证。与网络管理员核对代理的允许列表。

联系网络管理员以获取代理访问权限。企业或机构代理需要账户开通。请求访问凭据,确认代理地址和端口,并核实所使用的认证方案。

代码参考

.NET

HttpStatusCode.ProxyAuthenticationRequired

Rust

http::StatusCode::PROXY_AUTHENTICATION_REQUIRED

Rails

:proxy_authentication_required

Go

http.StatusProxyAuthRequired

Symfony

Response::HTTP_PROXY_AUTHENTICATION_REQUIRED

Python3.5+

http.HTTPStatus.PROXY_AUTHENTICATION_REQUIRED

Java

java.net.HttpURLConnection.HTTP_PROXY_AUTH

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_PROXY_AUTHENTICATION_REQUIRED

Angular

@angular/common/http/HttpStatusCode.ProxyAuthenticationRequired