プロキシ経由で元コンテンツを取得したい

概要

ブラウザからリクエストを受け付けたとき、x-Servletはリクエスト変換で取得した元コンテンツURIからコンテンツを取得します。

このとき、プロキシのホスト名とポート番号を設定しておくことにより、プロキシ経由でコンテンツを取得することができます。

元コンテンツURIに指定されているscheme("http"もしくは"https")によって動作が異なります。

設定

xproxy.propertiesのhttpProxyHosthttpProxyPorthttpsProxyHosthttpsProxyPortでプロキシの設定を行います。

動作

  • schemeがhttpの場合
    • プロキシが設定されていない場合
      直接元コンテンツを取得します。元コンテンツURIで指定されたHost:Portに接続し、リクエストを発行します。
    • プロキシが設定されている場合
      指定されたプロキシを経由してコンテンツを取得します。
      httpProxyHost:httpProxyPortに接続を行い、プロキシ用リクエストを発行します。
  • schemeがhttpsの場合
    • httpsでコンテンツを取得する際は必ずプロキシが設定されている必要があります。
      プロキシが設定されていない場合は、ステータスコード503(Service Unavailable)を端末に返します。
    • プロキシが設定されている場合
      指定されたプロキシを経由してコンテンツを取得します。httpsProxyHost:httpsProxyPortに接続を行い、schemeをhttpに変更したプロキシ用リクエストを発行します。

補足

通常のリクエストとプロキシ接続用のリクエスト

通常のリクエストは

    "GET /demo/index.html HTTP/1.0"

のように、ルートドキュメントからのパスのみを指定してリクエストを出します。

これを受け取ったWebサーバはルートドキュメントから該当のファイルを探しそれを返します。

対して、プロキシ接続用のリクエストは

    "GET http://webServerHost/demo/index.html HTTP/1.0"

のように、接続方法と接続先も含むような絶対URLによるリクエストを出します。

これを受け取ったプロキシサーバは絶対URLから接続方法と接続先を解析し、その接続先に対して

    "GET /demo/index.html HTTP/1.0"

というリクエストを発行します。

TOP