何が起きたのか?
407 は「目的の教室に入るためには、まずその前に立っている先生に身分証を見せてください」というサインです。 教室で言えば、生徒が職員室に向かう途中、廊下で別の先生に「ちょっと待って、誰のクラス?」と止められる——そんな場面に近いです。
401 がサーバー本体への認証要求なのに対して、407 は「中継役(プロキシ)」が独自に求める認証です。会社や学校のネットワークでは、外への通信がプロキシ経由になっていることが多く、その入口で身分確認をされます。レスポンスには Proxy-Authenticate ヘッダが付き、どんな方式の認証が必要かが書かれています。
黒板からのひとこと
学校では、教室と職員室の間に「来訪者受付」のような窓口があることがあります。先生に会う前に、まずそこで名簿に名前を書く。誰のところに行くのか、どこから来たのかを確認してから通してもらえる仕組みです。
407 もそれと同じで、ネットワークの境界に立っているプロキシが「私たちの組織の人ですか?」と確認しています。サーバーが拒んでいるわけではなく、入口の手前で止まっているだけです。
解決への歩み
大丈夫、次はこうしてみよう:
- プロキシの認証情報を確認:社内ヘルプデスクや IT 担当に最新の設定を確認
- 環境変数や CLI 設定を見直す:
HTTPS_PROXY=http://user:pass@proxy:8080のような形式 - Proxy-Authenticate ヘッダを読む:Basic、NTLM、Negotiate など方式に応じた対応を
- プロキシのログを確認(管理者向け):認証失敗の理由、対象 URL、利用者名から原因を切り分ける
実際にはこう見える
$ リクエスト
curl -i https://example.com/some/path ↓ レスポンス
HTTP/1.1 407 Proxy Authentication Required
Content-Type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>407 Proxy Authentication Required</h1></body></html>