情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

サーバサイドウェブ開発基礎 HTTP詳説 プロキシ

プロキシについて解説します。

ボディの変更

プロキシがHTTPレスポンスのボディのデータを変更した場合にはステータスコードも203Non-Authoritatve Information)に変更するようにします。また、214Transformation Applied)警告を付加するようにします。

Viaヘッダフィールド

ViaヘッダフィールドはHTTPリクエストやHTTPレスポンスにおいて設定するヘッダフィールドであり、プロキシがHTTPリクエストやHTTPレスポンスを転送する際に設定しなければならないヘッダフィールドです。

プロキシはViaヘッダフィールドの値に下のような情報を,区切りで追加してからHTTPリクエストやHTTPレスポンスを転送するようにします。

  • 自身が受け取ったHTTPリクエストやHTTPレスポンスのバージョン
  • 自身のホスト名とポート番号を:で結合したもの、あるいは、自身を表す偽名(ただし、ポート番号がデフォルトのポート番号である場合には:とポート番号を省略することができます)

これらの情報は順番に1文字の空白で区切って並べます。

また、自身が受け取ったメッセージがHTTPリクエストやHTTPレスポンスではない場合には(すなわち、別のプロトコルのメッセージである場合には)HTTPリクエストやHTTPレスポンスのバージョンの代わりにプロトコルの名称やバージョンを追加します。

また、HTTPリクエストやHTTPレスポンスのバージョンのHTTP/の部分は省略しても構いません。

Viaヘッダフィールドはどのようなプロトコルやプロキシを通してHTTPリクエストやHTTPレスポンスがサーバやクライアントに到達したかをサーバやクライアントが把握するために利用することができます。

また、それによってHTTPリクエストやHTTPレスポンスの送信においてクライアントやサーバがどのような機能を使用できるかを把握することができます。

また、ViaヘッダフィールドはHTTPリクエストやHTTPレスポンスの転送がプロキシ間でループすることを防ぐために使用することもできます。

すなわち、プロキシはHTTPリクエストやHTTPレスポンスを転送する前にViaヘッダフィールドの値からプロキシ間でHTTPリクエストやHTTPレスポンスの転送がループしていないかどうかをチェックすることができます。

Max-Forwardsヘッダフィールド

Max-ForwardsヘッダフィールドはHTTPリクエストにおいて設定できるヘッダフィールドであり、Max-Forwardsヘッダフィールドの値にはHTTPリクエストやHTTPレスポンスがプロキシによって転送される回数の最大値を10進数として指定します。

ただし、Max-ForwardsヘッダフィールドはメソッドがTRACEOPTIONSのHTTPリクエストでしか設定することができません。

プロキシがMax-Forwardsヘッダフィールドの値に0が指定されているHTTPリクエストを受け取った場合にはHTTPリクエストを転送するのではなく、プロキシがHTTPリクエストに対する処理を行い、HTTPレスポンスを作成し、返信するようにします。

また、0より大きい値が指定されている場合にはこの値を1減らしたものに設定し直し、HTTPリクエストを転送するようにします。ただし、この値がプロキシがサポートしている最大値より大きい場合には最大値に設定し直します。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-http, web