HTTP 305(スリーゼロファイブ)とは | 意味や読み方など丁寧でわかりやすい用語解説
HTTP 305(スリーゼロファイブ)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
HTTP 305 使用プロキシ (スリーゼロファイブユージングプロキシ)
英語表記
HTTP 305 (スリーハンドレッドファイブ)
用語解説
HTTP 305は、HTTPステータスコードの一つで、「Use Proxy」(プロキシを使用せよ)という意味を持つ。これはクライアントに対し、リクエストを直接オリジンサーバーへ送るのではなく、指定されたプロキシサーバーを介して再送信するように指示するリダイレクト系のステータスコードである。HTTPステータスコードは、ウェブサーバーがクライアントからのリクエストに対してどのような結果を返したかを示す3桁の数字であり、3xx番台はリダイレクト、つまり別の場所へ転送するように指示するコード群に属する。しかし、HTTP 305は現在、セキュリティ上の理由から非推奨(Deprecated)となっており、現代のウェブアプリケーションやブラウザではほとんど使用されない。システムエンジニアを目指す初心者は、このコードの存在と、それがなぜ非推奨となったのかを理解しておくことが重要である。
詳細について説明する。HTTPステータスコードは、サーバーとクライアント間の通信において、リクエストが成功したのか、それとも何らかの問題が発生したのかを明確に伝えるための標準的な手段である。1xxは情報、2xxは成功、3xxはリダイレクト、4xxはクライアントエラー、5xxはサーバーエラーをそれぞれ示す。HTTP 305は3xx番台に属するため、クライアントに対してリクエストを処理するために別の場所へ転送する必要があることを意味する。
本来、HTTP 305の「Use Proxy」は、サーバーが特定の理由でクライアントにプロキシの使用を強制したい場合に用いられることを想定して設計された。例えば、企業ネットワーク内でのセキュリティポリシーの適用、コンテンツフィルタリング、あるいはキャッシングによるパフォーマンス向上などを目的として、すべてのHTTP通信を特定のプロキシサーバー経由で行わせたいといった状況が考えられる。この場合、サーバーはHTTP 305ステータスコードとともに、Location ヘッダという追加情報を含んだレスポンスをクライアントに返す。このLocation ヘッダには、クライアントが次にリクエストを送るべきプロキシサーバーのURI(Uniform Resource Identifier)が記述されている。
クライアントがHTTP 305レスポンスを受け取った際の一連の流れは次のようになる。まず、クライアント(例えばウェブブラウザ)は元のリクエストをオリジンサーバーへ送信する。オリジンサーバーは、そのリクエストに対してHTTP 305と、使用すべきプロxyサーバーのURIが記載されたLocation ヘッダを返す。クライアントはLocation ヘッダに指定されたプロxyサーバーのURIを読み取り、次にそのプロxyサーバーへ、元のリクエストを再送信する。プロxyサーバーはクライアントからのリクエストを受け取ると、それを本来のオリジンサーバーへ転送し、オリジンサーバーからのレスポンスを受け取った後に、そのレスポンスをクライアントへ返す。このようにして、クライアントとオリジンサーバー間の通信は、指定されたプロxyサーバーを介して行われる。
しかし、このHTTP 305のメカニズムは、深刻なセキュリティリスクを内包していることが判明し、現在では非推奨とされている。最大の理由は、クライアントがサーバーから指示されたプロxyを無条件に信頼してしまう可能性があったためである。もし悪意のあるサーバーが、実際には安全でない、あるいは攻撃者の制御下にあるプロxyサーバーのURIをLocation ヘッダで指定した場合、クライアントはそれに従って通信を行うことになってしまう。これにより、中間者攻撃(Man-in-the-Middle Attack, MITM)と呼ばれるタイプの攻撃が容易になる。中間者攻撃では、攻撃者がクライアントとサーバー間の通信経路に割り込み、すべての通信内容を傍受したり、改ざんしたりすることが可能になる。例えば、ユーザー名やパスワードといった機密情報がプロxyを経由する際に盗まれたり、ウェブサイトの内容が不正に変更されたりする危険性がある。たとえHTTPSによる暗号化通信が使われていても、プロxyが誤って指示されたり、信頼できないプロxyが使われたりすると、そのセキュリティが損なわれる恐れがある。このようなセキュリティ上の懸念から、HTTP/1.1の仕様で定義されたにもかかわらず、その後のウェブセキュリティの進展とともに、HTTP 305は実質的に利用されなくなった。
現代のウェブ環境において、プロxyの設定は通常、クライアント側で明示的に行われるか、組織のネットワーク管理者によって集中管理される。例えば、ウェブブラウザのネットワーク設定でユーザーが手動でプロxyサーバーを指定したり、OSのシステム設定を通じてネットワーク全体でプロxyを使用するよう設定したりする方法が一般的である。アプリケーションレベルでサーバーがクライアントにプロxyの使用を強制するようなメカニズムは、今日のセキュリティモデルには適合しない。特定のリソースへのアクセス制御やルーティングの必要性は、HTTPリダイレクト(例えば、恒久的な移動を示す301 Moved Permanentlyや一時的な移動を示す302 Foundなど)や、サーバー側のリバースプロxy(NginxやApacheなどのウェブサーバー機能)を活用することで、より安全かつ柔軟に実現されている。
ほとんどの現代のウェブブラウザやHTTPクライアントライブラリは、HTTP 305ステータスコードを受け取ったとしても、これを適切に処理しないか、あるいはセキュリティ上の理由から完全に無視するように設計されている。そのため、システムエンジニアを目指す初心者が自身のシステム開発において、このHTTP 305を意図的に使用することは避けるべきである。もし既存の古いシステムや特殊なプロトコルでこのステータスコードに遭遇した場合は、その背景にあるプロxy設定の意図と、それに伴うセキュリティリスクを十分に評価し、可能であればより安全な代替手段への移行を検討する必要がある。HTTP 305はウェブの歴史の一部として知っておくべきコードではあるが、現代のウェブ開発においては実質的に死文化しており、その利用は推奨されない。