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 認可のサポートを示します。クライアントは Proxy-Authorization ヘッダーで指定した basic 認証プロトコルを使い、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)を指定します。クライアントの設定を期待される方式に合わせます。ヘッダーはブラウザの DevTools、またはプロキシ経由の 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:インターネットオプション、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