(57)【要約】【課題】本発明は、リバースプロキシを経由してサーバへアクセスするネットワークシステムにおいて、サーバによって設定されたクッキーを有効に使用できるようにすることを目的とする。【解決手段】ウェブサーバからユーザ端末へのデータの送信を中継するリバースプロキシ１００では、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０により、送信されたＨＴＴＰレスポンスを受信して、Ｓｅｔ−Ｃｏｏｋｉｅヘッダに含まれるドメインパラメータを削除し、このドメインパラメータを構成する構成要素の並び順を逆順に並べ替えてパスパラメータに埋め込み、ＨＴＴＰレスポンスをユーザ端末が認識可能な形式に書き換える。また、リンク・ロケーションヘッダ書き換え部１５０により、リンク及びロケーションのドメイン及びパスをＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０によって書き換えられた形式に合わせて書き換える。そして、ＨＴＴＰレスポンス送信部１６０により、書き換えられたＨＴＴＰレスポンスをユーザ端末に送信する。【選択図】　　　　図２
2004094805.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク上に設けられた複数のウェブサーバと、当該複数のウェブサーバに対する外部からのアクセスを中継するリバースプロキシとを備えたネットワークシステムであって、
前記ウェブサーバは、
前記ネットワークに接続された所定の端末から送信されたリクエストに応じて当該端末の状態を保持するための情報を含むレスポンスを当該端末に返送し、
前記リバースプロキシは、
前記レスポンスに含まれる前記端末の状態を保持するための情報を、当該端末が前記ネットワークの構成として認識可能な形式に変換して返送することを特徴とするネットワークシステム。
【請求項２】
前記リバースプロキシは、
前記端末の状態を保持するための前記情報に含まれる前記ウェブサーバのドメインを指定するドメインパラメータを削除し、当該ドメインパラメータを当該情報に含まれる当該ウェブサーバにおけるパスパラメータに埋め込むことを特徴とする請求項１に記載のネットワークシステム。
【請求項３】
前記リバースプロキシは、
前記ドメインパラメータを構成する構成要素の並び順を逆順に並べ替えて前記パスパラメータに埋め込むことを特徴とする請求項２に記載のネットワークシステム。
【請求項４】
ウェブサーバからユーザ端末へのデータの送信を中継するリバースプロキシであって、
前記ウェブサーバから前記ユーザ端末に返送された前記データを受信すると共に、当該データに含まれるドメインを当該ユーザ端末が認識可能な形式に書き換えるヘッダ書き換え部と、
前記ヘッダ書き換え部によって書き換えられた前記データを前記ユーザ端末に送信するデータ送信部と
を備えたことを特徴とするリバースプロキシ。
【請求項５】
前記ヘッダ書き換え部は、
前記データに含まれる前記ドメインの記述を逆順に並べ替え、当該逆順に並べ替えられたドメインの記述を含むパスを生成することを特徴とする請求項４に記載のリバースプロキシ。
【請求項６】
前記データに含まれるリンク及びロケーションのドメイン及びパスを前記ヘッダ書き換え部によって書き換えられた前記ドメインの記述を含むパスに合わせて書き換えるリンク・ロケーション書き換え部をさらに備えたことを特徴とする請求項４に記載のリバースプロキシ。
【請求項７】
前記ユーザ端末から前記ウェブサーバへ送信されたリクエストを受信し、当該リクエストに基づいて前記ネットワーク上に配置された複数のサーバのうち当該リクエストのアクセス先である前記ウェブサーバを特定するウェブサーバ名取得部と、
前記リクエストに基づいて当該リクエストに記述されているアクセスパスを前記ウェブサーバにおける本来のパスに書き換えるＵＲＬ書き換え部と、
前記リクエストを当該リクエストによって示される前記ウェブサーバに転送するリクエスト転送部と
をさらに備えたことを特徴とする請求項４に記載のリバースプロキシ。
【請求項８】
ユーザ端末からウェブサーバへのリクエストの送信を中継するリバースプロキシであって、
受信された前記リクエストの記述を変換して得られる情報に基づいてネットワーク上に配置された複数のサーバのうち当該リクエストを送信する前記ウェブサーバを特定するウェブサーバ名取得部と、
前記ウェブサーバ名取得部にて特定された前記ウェブサーバに基づいて、前記リクエストによるアクセス先を前記ウェブサーバにおけるＵＲＬに書き換えるＵＲＬ書き換え部と、
前記ウェブサーバの前記ＵＲＬに前記リクエストを転送するリクエスト転送部と
を備えたことを特徴とするリバースプロキシ。
【請求項９】
端末とサーバとの間におけるＨＴＴＰリクエストの送信及びＨＴＴＰレスポンスの返送を中継するコンピュータ装置であって、
前記端末のブラウザから送信されたクッキーと前記ＨＴＴＰリクエストとを中継して当該ＨＴＴＰリクエストの送信先の前記サーバに転送するＨＴＴＰリクエスト転送手段と、
前記ＨＴＴＰリクエストに応じて前記サーバから返送されたＨＴＴＰレスポンスを受信し、セットクッキーヘッダに記述されたドメインを削除して当該ドメインを構成する構成要素の並び順を逆順に並べ替えて当該セットクッキーヘッダに記述されたパスに埋め込んで前記端末に転送するＨＴＴＰレスポンス転送手段とを備えたことを特徴とするコンピュータ装置。
【請求項１０】
前記ＨＴＴＰリクエスト転送手段は、
前記サーバのドメインと共に当該サーバの通信ポートのポート番号を指定して前記ＨＴＴＰリクエストを前記サーバに転送することを特徴とする請求項９に記載のコンピュータ装置。
【請求項１１】
前記ＨＴＴＰレスポンス転送手段は、
前記ＨＴＴＰレスポンスに応じて所定の固定文字列を前記セットクッキーヘッダに付け加えて前記端末に転送することを特徴とする請求項９に記載のコンピュータ装置。
【請求項１２】
前記ＨＴＴＰレスポンス転送手段は、
前記ドメインの前記構成要素の並び順を逆順に並べ替える際に、当該ドメインを特定するのに必要な当該構成要素を１つに纏めて前記端末に転送することを特徴とする請求項９に記載のコンピュータ装置。
【請求項１３】
前記ＨＴＴＰレスポンス転送手段は、
前記サーバの前記セットクッキーヘッダ内のドメインパラメータを自装置のサーバ名に置換して前記端末に転送することを特徴とする請求項９に記載のコンピュータ装置。
【請求項１４】
第１のコンピュータ装置と第２のコンピュータ装置とのデータの送受信を中継するコンピュータ装置におけるデータ処理方法であって、
前記第１のコンピュータ装置から前記第２のコンピュータ装置に対して送信されたレスポンスを受信するステップと、
前記レスポンスにセットクッキーヘッダが含まれているか否かを判断するステップと、
前記レスポンスにセットクッキーヘッダが含まれている場合には、当該セットクッキーヘッダに基づいて前記第２のコンピュータ装置に設定されるクッキーが当該第２のコンピュータ装置において認識可能な形式となるように当該セットクッキーヘッダを書き換えるステップと、
前記セットクッキーヘッダが書き換えられた前記レスポンスを前記第２のコンピュータ装置に送信するステップと
を含むことを特徴とするデータ処理方法。
【請求項１５】
第１のコンピュータ装置と第２のコンピュータ装置とのデータの送受信を中継するコンピュータ装置を制御して所定のデータ処理を行うプログラムであって、
前記第１のコンピュータ装置から前記第２のコンピュータ装置に対して送信されたレスポンスを受信する処理と、
前記レスポンスにセットクッキーヘッダが含まれている場合には、当該セットクッキーヘッダに基づいて前記第２のコンピュータ装置に設定されるクッキーが当該第２のコンピュータ装置において認識可能な形式となるように当該セットクッキーヘッダを書き換える処理と、
前記セットクッキーヘッダが書き換えられた前記レスポンスを前記第２のコンピュータ装置に送信する処理と
を前記コンピュータ装置に実行させることを特徴とするプログラム。
【請求項１６】
前記セットクッキーヘッダを書き換える処理では、
前記レスポンスの前記セットクッキーヘッダに含まれるドメインを逆順に並べ替え、当該ドメインの区切り文字を所定の文字列に置換して逆順に並べ替えられたドメインを含むパスを生成することを特徴とする請求項１５に記載のプログラム。
【請求項１７】
前記レスポンスに含まれるリンク及びロケーションのドメイン及びパスを前記セットクッキーヘッダに含まれる前記パスに合わせて書き換える処理
を前記コンピュータ装置にさらに実行させることを特徴とする請求項１５に記載のプログラム。
【請求項１８】
第１のコンピュータ装置と第２のコンピュータ装置とのデータの送受信を中継するコンピュータ装置を制御して所定のデータ処理を行うプログラムであって、
前記第２のコンピュータ装置から送信されたリクエストを受信し、当該リクエストの記述を変換して得られる情報に基づいて当該リクエストを送信する前記第１のコンピュータ装置を特定する処理と、
前記リクエストによるアクセス先を、特定された前記第１のコンピュータ装置におけるＵＲＬに書き換える処理と、
特定された前記第１のコンピュータ装置の前記ＵＲＬに前記リクエストを送信する処理と
を前記コンピュータ装置に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク上でサーバと外部ネットワークとの間に介在させるリバースプロキシに関し、特にサーバがクッキーを設定する場合のリバースプロキシの処理等に関する。
【０００２】
【従来の技術】
ネットワークにおいて種々のサービスを提供するサーバのセキュリティを強化するため、ネットワーク上にリバースプロキシを設置することが行われる。リバースプロキシとは、サーバに代わって当該サーバへの要求を受信し中継するプロキシサーバである。すなわち、当該サーバにアクセスしようとしたユーザは全てリバースプロキシを経由することになるため、当該サーバが外部から直接アクセスを受けることがなくなる。
【０００３】
リバースプロキシを経由してサーバへアクセスする場合、アクセス要求（リクエスト）には一般に次のフォーマットが用いられる。なお、以下の例では通信プロトコルとしてＨＴＴＰ（Ｈｙｐｅｒｔｅｘｔ　Ｔｒａｎｓｆｅｒ　Ｐｒｏｔｏｃｏｌ）を用い、ウェブサーバへアクセスする場合について説明する。
（１）ｈｔｔｐ：／／＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞／＜ｐｒｅｆｉｘ＞／＜ｐａｔｈ　ｎａｍｅ　ｏｆ　Ｗｅｂ　ｓｅｒｖｅｒ＞
（２）ｈｔｔｐ：／／＜ｗｅｂ　ｓｅｒｖｅｒ＞／＜ｐａｔｈ　ｎａｍｅ　ｏｆ　Ｗｅｂ　ｓｅｒｖｅｒ＞
リバースプロキシは、＜ｐｒｅｆｉｘ＞とウェブサーバ名とを対応付けた図１２に示すようなテーブルを管理している。そして、（１）のフォーマットのリクエストを受け取ると、図１２のテーブルを参照し、リクエスト中の＜ｐｒｅｆｉｘ＞に対応するウェブサーバに対して（２）のフォーマットのリクエストを送る。
【０００４】
ところで、ＨＴＴＰリクエストは、ステートレスつまり各リクエストが独立であるため、ウェブサーバは、１人のユーザからの連続するリクエストであっても１つ１つ独立したリクエストと認識する。そこで、リクエスト間で状態を保持するためにクッキー（Ｃｏｏｋｉｅ）が導入されている。
クッキーはウェブサーバがブラウザに設定するものであり、例えば以下のようにしてユーザを追跡することができる。
まず、ウェブサーバがユーザからのリクエストに対してレスポンスを返す際に、レスポンス内に、
Ｓｅｔ−Ｃｏｏｋｉｅ：　　ｉｄ＝００１
のようなＳｅｔ−Ｃｏｏｋｉｅ（セットクッキー）をヘッダに埋め込む。これにより、その後の当該ユーザからの全てのリクエストには、リクエストヘッダ内に、
Ｃｏｏｋｉｅ：　　ｉｄ＝００１
というクッキーが埋め込まれる。この情報に基づいて、当該ユーザがどのページにアクセスしたかを追跡することができる。
【０００５】
ここで、上記のＳｅｔ−Ｃｏｏｋｉｅを埋め込んだヘッダ（以下、Ｓｅｔ−Ｃｏｏｋｉｅ　ヘッダ）は、以下のようなフォーマットを持つ。
Ｓｅｔ−Ｃｏｏｋｉｅ：　＜ｎａｍｅ＞＝＜ｖａｌｕｅ＞；　ｄｏｍａｉｎ＝＜ｄｏｍａｉｎ＞；　ｐａｔｈ＝＜ｐａｔｈ＞；（その他）
ドメイン（ｄｏｍａｉｎ）、パス（ｐａｔｈ）の指定により、これを受け取ったブラウザがクッキーを送り返す範囲を制限している。つまり、ドメインで指定された範囲内のウェブサーバにおいて、パスで指定されているディレクトリ（ｄｉｒｅｃｔｏｒｙ）以下のアクセスに対してのみクッキーが送り返されることとなる。
【０００６】
【発明が解決しようとする課題】
しかし、リバースプロキシが設置されたネットワークシステムにおいて、リバースプロキシからサーバへ送られたリクエスト（例えば上述した（２）のフォーマットのリクエスト）に対する当該サーバからのレスポンス内にＳｅｔ−Ｃｏｏｋｉｅヘッダがあった場合、このレスポンスをそのままリバースプロキシがリクエストを行ったブラウザ（ユーザ端末）へ返すと、一般的に当該ブラウザはこのＳｅｔ−Ｃｏｏｋｉｅを正しく受け取ることができない。
その理由は、Ｓｅｔ−Ｃｏｏｋｉｅはドメイン、パスを特定するパラメータによってその有効範囲を指定しているが、サーバ本来のドメイン及びパスと、リバースプロキシを通したときの当該サーバのドメイン及びパスが異なるためである。例えば、ウェブサーバが、自身が属するドメインの値をドメインパラメータに設定してＳｅｔ−Ｃｏｏｋｉｅを設定した場合において、ブラウザから認識できるリバースプロキシがＳｅｔ−Ｃｏｏｋｉｅで指定されているドメインに存在しない場合は、ブラウザはこのＳｅｔ−Ｃｏｏｋｉｅを無視してしまうためである。
【０００７】
そこで本発明は、リバースプロキシを経由してサーバへアクセスするネットワークシステムにおいて、サーバによって設定されたクッキーを透過的に扱うようにすることを目的とする。
また本発明は、サーバの設定したクッキーを有効に使用するためにＳｅｔ−Ｃｏｏｋｉｅを書き換える機能を備えたリバースプロキシを提供することを目的とする。
【０００８】
【課題を解決するための手段】
上記の目的を達成する本発明は、次のようなネットワークシステムによって実現される。すなわち、このネットワークシステムは、ネットワーク上に設けられた複数のウェブサーバと、この複数のウェブサーバに対する外部からのアクセスを中継するリバースプロキシとを備え、このネットワークシステムにおいてウェブサーバは、ネットワークに接続された所定の端末から送信されたリクエストに応じて端末の状態を保持するための情報を含むレスポンスをこの端末に返送し、リバースプロキシは、このレスポンスに含まれる端末の状態を保持するための情報を、この端末がネットワークの構成として認識可能な形式に変換して返送する。そして、リバースプロキシは、端末の状態を保持するための情報に含まれるウェブサーバのドメインを指定するドメインパラメータを削除し、ドメインパラメータを構成する構成要素の並び順を逆順に並べ替えて、この情報に含まれるウェブサーバにおけるパスパラメータに埋め込む。
【０００９】
また、本発明は、次のような機能構成を有するリバースプロキシによって実現される。ウェブサーバからユーザ端末へのデータの送信を中継するリバースプロキシは、ウェブサーバからユーザ端末に返送されたデータを受信すると共に、このデータに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダのドメイン、パスの記述をユーザ端末が認識可能な形式に書き換えるヘッダ書き換え部と、このヘッダ書き換え部によって書き換えられたデータをユーザ端末に送信するデータ送信部とを備える。また、このリバースプロキシは、このデータに含まれるリンク及びロケーションのドメイン及びパスをヘッダ書き換え部によって書き換えられたドメインの記述を含むパスに合わせて書き換えるリンク・ロケーション書き換え部をさらに備える。
【００１０】
さらに、本発明は、次のような機能構成を有するリバースプロキシによって実現される。ユーザ端末からウェブサーバへのリクエストの送信を中継するリバースプロキシは、受信されたリクエストの記述を変換して得られる情報（ドメインに関する情報）に基づいてネットワーク上に配置された複数のサーバのうちこのリクエストを送信するウェブサーバを特定するウェブサーバ名取得部と、このウェブサーバ名取得部にて特定されたウェブサーバに基づいて、このリクエストによるアクセス先をこのウェブサーバにおけるＵＲＬに書き換えるＵＲＬ書き換え部と、ウェブサーバのＵＲＬにこのリクエストを転送するリクエスト転送部とを備える。
【００１１】
またさらに、本発明は、次のようなコンピュータ装置を提供することができる。すなわち、端末とサーバとの間におけるＨＴＴＰリクエストの送信及びＨＴＴＰレスポンスの返送を中継するコンピュータ装置は、この端末のブラウザから送信されたクッキーとＨＴＴＰリクエストとを中継してこのＨＴＴＰリクエストの送信先のサーバに転送するＨＴＴＰリクエスト転送手段と、このＨＴＴＰリクエストに応じてこのサーバから返送されたＨＴＴＰレスポンスを受信し、セットクッキーヘッダに記述されたドメインを削除してこのドメインを構成する構成要素の並び順を逆順に並べ替えて、セットクッキーヘッダに記述されたパスに埋め込んでこの端末に転送するＨＴＴＰレスポンス転送手段とを備える。ここで、このＨＴＴＰリクエスト転送手段は、ウェブサーバがデフォルトのポート以外を使用している場合は、ブラウザのリバースプロキシに対するアクセスパス内にウェブサーバのポート番号を指定してアクセスする。また、この前記ＨＴＴＰレスポンス転送手段は、ＨＴＴＰレスポンスに応じて所定の固定文字列をセットクッキーヘッダに付け加えて端末に転送する。さらに、ＨＴＴＰレスポンス転送手段は、ドメインの構成要素の並び順を逆順に並べ替える際に、このドメインを特定するのに必要な構成要素を１つに纏めて端末に転送する。またさらに、ＨＴＴＰレスポンス転送手段は、サーバのセットクッキーヘッダ内のドメインパラメータを自装置のサーバ名に置換して端末に転送する。
【００１２】
さらにまた、本発明は、次のようなデータ処理方法を提供することができる。すなわち、第１のコンピュータ装置と第２のコンピュータ装置とのデータの送受信を中継するコンピュータ装置におけるデータ処理方法は、第１のコンピュータ装置から第２のコンピュータ装置に対して送信されたレスポンスを受信するステップと、このレスポンスにセットクッキーヘッダが含まれているか否かを判断するステップと、このレスポンスにセットクッキーヘッダが含まれている場合には、セットクッキーヘッダに基づいて第２のコンピュータ装置に設定されるクッキーがこの第２のコンピュータ装置において認識可能な形式となるようにセットクッキーヘッダを書き換えるステップと、このセットクッキーヘッダが書き換えられたレスポンスを第２のコンピュータ装置に送信するステップとを含む。
また、第１のコンピュータ装置と第２のコンピュータ装置とのデータの送受信を中継するコンピュータ装置におけるデータ処理方法は、第２のコンピュータ装置から送信されたリクエストを受信し、
このリクエストの情報を変換して得られる情報に基づいてこのリクエストを送信する第１のコンピュータ装置を特定するステップと、このリクエストによるアクセス先を特定された第１のコンピュータ装置におけるＵＲＬに書き換えるステップと、特定されたこの第１のコンピュータ装置のＵＲＬにリクエストを送信するステップとを含む。
【００１３】
ここで本発明は、上述した所定のデータ処理を行う方法の各ステップによる処理、及び各部の機能において実現される処理をコンピュータを制御して実行するプログラムとして実現することができる。このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより、提供することができる。
【００１４】
【発明の実施の形態】
以下、添付図面に示す実施の形態に基づいて、この発明を詳細に説明する。
図１は、本実施の形態におけるネットワークシステムの構成を示す図である。図１に示すように、本実施の形態におけるネットワークシステムは、外部からのリクエストに応じたコンテンツを提供すると共にクッキーを返送するウェブサーバ２００と、このウェブサーバ２００へのリクエストの送信及びこのリクエストに対するウェブサーバ２００からのレスポンスを例えばＬＡＮ網からなるネットワーク４００を介して中継するリバースプロキシ１００と、このリバースプロキシ１００に例えばインターネット網からなるネットワーク５００を介して接続され、ウェブサーバ２００へのリクエストを送信すると共にウェブサーバ２００からのレスポンスを受信するユーザ端末３００とを備える。
図示するように、本実施の形態におけるネットワークにおいてウェブサーバ２００は、異なるドメインを有する複数のウェブサーバ２０１，２０２などから構成される。また図示するように、このウェブサーバ２００には、ブラウザ３０１ａ，３０２ａを備えたユーザ端末３０１，３０２などの複数の端末から任意にアクセスすることができる。以下では、このウェブサーバ２００にアクセスする端末が物理的に同じ端末であっても、ログインするユーザに応じて異なる端末であるものとみなす。
【００１５】
以下、本実施の形態では、ウェブサーバ２００とユーザ端末３００との通信プロトコルとしてＨＴＴＰを用い、ＨＴＴＰリクエスト及びＨＴＴＰレスポンスの送受信を行う場合について説明する。
図１に示したウェブサーバ２００は、例えばサーバとして外部からのアクセス負荷に耐え得る機能を備えたコンピュータ装置などからなる。このウェブサーバ２００は、ユーザ端末３００から送信されたＨＴＴＰリクエストに対してデータやファイル（ＨＴＴＰレスポンス）を返送することにより、このユーザ端末３００にＨＴＴＰリクエストに応じたコンテンツを提供する。そしてこのウェブサーバ２００は、ユーザ端末３００にＨＴＴＰレスポンスを返送する際、このＨＴＴＰレスポンス内にＳｅｔ−Ｃｏｏｋｉｅヘッダを埋め込んで返送する。ウェブサーバ２００から返送されるＨＴＴＰレスポンスは、一旦、ウェブサーバ２００とユーザ端末３００との間に設けられたリバースプロキシ１００によって受信される。本実施の形態では、このウェブサーバ２００において埋め込まれたＳｅｔ−Ｃｏｏｋｉｅヘッダを含むＨＴＴＰレスポンスは、リバースプロキシ１００において所定の形式に変換される。
【００１６】
リバースプロキシ１００は、例えばウェブサーバ２００とユーザ端末３００とをＨＴＴＰリクエスト及びＨＴＴＰレスポンスを中継するネットワーク機能を備えたコンピュータ装置などからなる。このリバースプロキシ１００は、ユーザ端末３００からのＨＴＴＰリクエストを中継して、このＨＴＴＰリクエストにて特定されるウェブサーバ２００にＨＴＴＰリクエストを転送する。さらにこのリバースプロキシ１００は、転送したＨＴＴＰリクエストに応じてウェブサーバ３００から返信されてきたＨＴＴＰレスポンスを中継する。
ここで、本実施の形態におけるリバースプロキシ１００は、ウェブサーバ２００から返送されたＳｅｔ−Ｃｏｏｋｉｅヘッダを含むＨＴＴＰレスポンスを受信して、このＨＴＴＰレスポンス内のＳｅｔ−Ｃｏｏｋｉｅヘッダを所定の形式に変換する。さらにこのＨＴＴＰレスポンスに含まれるリンク・ロケーションヘッダの書き換えを行う。そして、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ、及びリンク・ロケーションヘッダが書き換えられたＨＴＴＰレスポンスを、ＨＴＴＰリクエストを行ったユーザ端末３００に対して送信する。リバースプロキシ１００において実現されるこれらの機能の詳細については後述する。
【００１７】
またユーザ端末３００は、例えばパーソナルコンピュータやワークステーションなどからなる。これらのユーザ端末３００は、キーボードやマウス等の操作部及びディスプレイ等の表示部を有する。また、このユーザ端末３００は、プログラム制御に応じて動作するブラウザ３００ａを備える。このブラウザ３００ａは、操作部における操作に応じて表示部にブラウザウィンドウ（画面）を表示すると共に、種々のウェブサーバ２００によって設定されたクッキーを管理する。そしてブラウザ３００ａは、このブラウザウィンドウに対して所定の操作が行われることにより、ネットワーク接続されたウェブサーバ２００に対して例えばＨＴＴＰリクエストを送信する。ユーザ端末３００は、このＨＴＴＰリクエストに応じてウェブサーバ２００から返送されたＨＴＴＰレスポンスに基づいて、ブラウザ３００ａ上にコンテンツを表示する。
さらにこのブラウザ３００ａには、ＨＴＴＰレスポンスに埋め込まれてウェブサーバ２００から返送されたＳｅｔ−Ｃｏｏｋｉｅヘッダに基づいてクッキーが設定される。ブラウザ３００ａはこのクッキーを保持し、次回以降にこのクッキーの有効範囲となるウェブサーバ２００にＨＴＴＰリクエストを送信する際には、このＨＴＴＰリクエストにクッキーを埋め込んで送信する。そうすると、このクッキーを含むＨＴＴＰリクエストを受信したウェブサーバ２００は、同じユーザ端末３００から送信されるＨＴＴＰリクエストの関連性を保つと共に、ユーザ端末３００の状態を保持することができるようになる。
【００１８】
以下では、リバースプロキシ１００の機能について述べるが、ここで、ユーザ端末３００から送信されたＨＴＴＰリクエストに基づいてウェブサーバ２００から返送されるＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダについて説明する。
ＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダには、ドメイン、パスパラメータが記述されている。そして、この情報によって、ユーザ端末３００のブラウザ３００ａには、クッキーの有効範囲が設定される。以下、図１１を用いてウェブサーバ２００からユーザ端末３００に返送されるＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダ、及びユーザ端末３００からウェブサーバ２００に送信されるＨＴＴＰリクエストのリクエストヘッダに埋め込まれるクッキーについて説明する。
【００１９】
図１１は、ウェブサーバ２００から送信されるＳｅｔ−Ｃｏｏｋｉｅヘッダによって決められるクッキーの有効範囲と、このクッキーの有効範囲であるウェブサーバ２００に送信されるＨＴＴＰリクエスト及びクッキーの一例を示す図である。
図示した例では、ネットワーク上に、ウェブサーバ２０１（ドメイン：“ｗｗｗ．ｓｕｂ．ａｂｃ．ｃｏｍ”）、ウェブサーバ２０２（ドメイン：“ｗｗｗ２．ｓｕｂ．ａｂｃ．ｃｏｍ”）、ウェブサーバ２０３（ドメイン：“ｗｗｗ３．ａｂｃ．ｃｏｍ”）、ウェブサーバ２０４（ドメイン：“ｗｗｗ．ｘｙｚ．ｃｏｍ”）の複数のウェブサーバ２００が配置されている。そして、このウェブサーバ２００との間でＨＴＴＰリクエスト及びＨＴＴＰレスポンスの送受信を行うユーザ端末３００がネットワークを介して接続されている。ウェブサーバ２０１は、ユーザ端末３００から送信されたＨＴＴＰリクエストに応じて、
（１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ｗｗｗ．ｓｕｂ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ２＝ｖａｌｕｅ２；ｄｏｍａｉｎ＝ｗｗｗ．ｓｕｂ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／ｐａｔｈ１／；
Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ３＝ｖａｌｕｅ３；ｄｏｍａｉｎ＝ｓｕｂ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ４＝ｖａｌｕｅ４；ｄｏｍａｉｎ＝ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
というＳｅｔ−Ｃｏｏｋｉｅヘッダ（１）を含むＨＴＴＰレスポンスを返送する。
そうすると、ユーザ端末３００のブラウザ３００ａには、このＳｅｔ−Ｃｏｏｋｉｅヘッダ（１）に基づいてクッキーが設定され、保持される。このＳｅｔ−Ｃｏｏｋｉｅヘッダ（１）に基づいて設定されるクッキーの有効範囲は、
ｎａｍｅ１：ｗｗｗ．ｓｕｂ．ａｂｃ．ｃｏｍ；
ｎａｍｅ２：ｗｗｗ．ｓｕｂ．ａｂｃ．ｃｏｍ／ｐａｔｈ１；
ｎａｍｅ３：ｗｗｗ．ｓｕｂ．ａｂｃ．ｃｏｍ；ｗｗｗ２．ｓｕｂ．ａｂｃ．ｃｏｍ；
ｎａｍｅ４：ｗｗｗ．ｓｕｂ．ａｂｃ．ｃｏｍ；ｗｗｗ２．ｓｕｂ．ａｂｃ．ｃｏｍ；ｗｗｗ３．ｓｕｂ．ａｂｃ．ｃｏｍ；
である。
【００２０】
図１１に示した例では、ユーザ端末３００からウェブサーバ２０１にＨＴＴＰリクエストを送信する場合、このＨＴＴＰリクエストのリクエストヘッダには、ブラウザ３００ａに保持されたクッキーの有効範囲に基づいて
（２）ＧＥＴ　／ｉｎｄｅｘ．ｈｔｍｌ
Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｎａｍｅ３＝ｖａｌｕｅ３；ｎａｍｅ４＝ｖａｌｕｅ４；
が埋め込まれて送信される。
ユーザ端末３００からウェブサーバ２０１のディレクトリ（“／ｐａｔｈ１／”）にＨＴＴＰリクエストを送信する場合、このＨＴＴＰリクエストのリクエストヘッダには、ブラウザ３００ａに保持されたクッキーの有効範囲に基づいて
（３）ＧＥＴ　／ｐａｔｈ１／ｉｎｄｅｘ．ｈｔｍｌ
Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｎａｍｅ２＝ｖａｌｕｅ２；ｎａｍｅ３＝ｖａｌｕｅ３；ｎａｍｅ４＝ｖａｌｕｅ４；が埋め込まれて送信される。
ユーザ端末３００からウェブサーバ２０２にＨＴＴＰリクエストを送信する場合、このＨＴＴＰリクエストのリクエストヘッダには、ブラウザ３００ａに保持されたクッキーの有効範囲に基づいて
（４）ＧＥＴ　／ｉｎｄｅｘ．ｈｔｍｌ
Ｃｏｏｋｉｅ：ｎａｍｅ３＝ｖａｌｕｅ３；ｎａｍｅ４＝ｖａｌｕｅ４；
が埋め込まれて送信される。
ユーザ端末３００からウェブサーバ２０３にＨＴＴＰリクエストを送信する場合、このＨＴＴＰリクエストのリクエストヘッダには、ブラウザ３００ａに保持されたクッキーの有効範囲に基づいて
（５）ＧＥＴ　／ｉｎｄｅｘ．ｈｔｍｌ
Ｃｏｏｋｉｅ：ｎａｍｅ４＝ｖａｌｕｅ４；
が埋め込まれて送信される。
また、ユーザ端末３００からウェブサーバ２０４にＨＴＴＰリクエストを送信する場合についてだが、このウェブサーバ２０４を有効範囲とするクッキーは存在しないので、このＨＴＴＰリクエストのリクエストヘッダにクッキーは埋め込まれない。すなわち
（６）ＧＥＴ　／ｉｎｄｅｘ．ｈｔｍｌ
だけが送信される。
以上のように、ユーザ端末３００からウェブサーバ２００にＨＴＴＰリクエストを送信する際、このＨＴＴＰリクエストのリクエストヘッダには、それぞれのクッキーの有効範囲に基づいて、ＨＴＴＰリクエストの送信先となるウェブサーバ２００に応じたクッキーが埋め込まれて送信されていた。
【００２１】
上記のように、ＨＴＴＰレスポンスと共にＳｅｔ−Ｃｏｏｋｉｅヘッダを受信したユーザ端末３００のブラウザ３００ａは、Ｓｅｔ−Ｃｏｏｋｉｅヘッダにて示された有効範囲に対するクッキーを設定する。しかしながらユーザ端末３００のブラウザ３００ａから見ると、リバースプロキシ１００を介してＨＴＴＰレスポンスを受信する場合には、このＨＴＴＰリクエストの送信元はウェブサーバ２００ではなくリバースプロキシ１００である。一般的に、ウェブサーバ２００が返すＳｅｔ−Ｃｏｏｋｉｅヘッダ内のドメインパラメータ、パスパラメータの値は、リバースプロキシ１００上でのドメインパラメータ、パスパラメータの値としては正しくないため、このＳｅｔ−Ｃｏｏｋｉｅヘッダを受け取ったブラウザ３００ａは、このＳｅｔ−Ｃｏｏｋｉｅヘッダを無視するか、または正しくない範囲に対してクッキーを送り返すことになる。
【００２２】
そこで本実施の形態では、リバースプロキシ１００を介してウェブサーバ２００からユーザ端末３００のブラウザ３００ａへレスポンスを返送する場合であっても、ブラウザ３００ａにＳｅｔ−Ｃｏｏｋｉｅヘッダを透過的に扱うための変形を行う。Ｓｅｔ−Ｃｏｏｋｉｅヘッダの変形方法として本実施の形態では、このＳｅｔ−Ｃｏｏｋｉｅヘッダに含まれるドメインパラメータ（ドメインに関する情報）を削除して、このドメインに関する情報をパスパラメータ（パスに関する情報）に埋め込む。この際、このＳｅｔ−Ｃｏｏｋｉｅヘッダによって設定されるクッキーの有効範囲を階層的に絞り込むために、ドメインに関する情報を構成する構成要素を逆順に並べ替える。例えば、“ｗｗｗ．ａｂｃ．ｃｏｍ”の構成要素の並び順を“ｃｏｍ．ａｂｃ．ｗｗｗ”とする。さらにこの構成要素を区切る区切り文字“．”を“／”として置換したものをパスに関する情報に埋め込む。
以下、本実施の形態では、ＦＱＤＮ（Ｆｕｌｌ　Ｑｕａｌｉｆｉｅｄ　Ｄｏｍａｉｎ　Ｎａｍｅ）が上述のようにして加工されたものを「リバースドＦＱＤＮ」（Ｒｅｖｅｒｓｅｄ　Ｆｕｌｌ　Ｑｕａｌｉｆｉｅｄ　Ｄｏｍａｉｎ　Ｎａｍｅ）と称する。
【００２３】
以上のように本実施の形態では、Ｓｅｔ−Ｃｏｏｋｉｅヘッダに含まれるドメイン情報を削除し、このドメイン情報に対してリバースドＦＱＤＮと同様の操作をしたものをパスに関する情報に埋め込んでＳｅｔ−Ｃｏｏｋｉｅヘッダを書き換える。このようにしてＳｅｔ−Ｃｏｏｋｉｅヘッダを書き換えれば、ブラウザ３００ａにおいて受信されるＳｅｔ−Ｃｏｏｋｉｅヘッダ内にドメインパラメータが存在しないので、リバースプロキシ１００から送信されたＳｅｔ−Ｃｏｏｋｉｅヘッダであっても無視されることはない。そして、次回以降にクッキーの有効範囲に対してＨＴＴＰリクエストを送信する際には、このＨＴＴＰリクエストに当該クッキーを埋め込んで送信する。
【００２４】
図２は、本実施の形態におけるリバースプロキシ１００の機能を示すブロック図である。以下、図２に例示する各機能は、リバースプロキシ１００のプログラム制御されたＣＰＵにて実現されるソフトウェアブロックである。
図２に示すように、ＨＴＴＰリクエスト及びＨＴＴＰレスポンスを中継するリバースプロキシ１００は、ＨＴＴＰリクエストを送信するウェブサーバ２００を特定するウェブサーバ名取得部１１０と、ＨＴＴＰリクエストの送信先のＵＲＬを書き換えるＵＲＬ書き換え部１２０と、ＨＴＴＰリクエストをこのウェブサーバ２００に転送するＨＴＴＰリクエスト転送部１３０とを備える。上記のウェブサーバ名取得部１１０と、ＵＲＬ書き換え部１２０と、ＨＴＴＰリクエスト転送部１３０とで、ＨＴＴＰリクエストをウェブサーバ２００に転送するＨＴＴＰリクエスト転送手段を構成する。
本実施の形態では、ユーザ端末３００から送信され、リクエスト転送手段により転送されるＨＴＴＰリクエストは、
ｈｔｔｐ：／／＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞／＜ｐｒｅｆｉｘ＞／＜ｐａｔｈ　ｎａｍｅ　ｏｆ　Ｗｅｂ　ｓｅｒｖｅｒ＞
となり、必ずリバースプロキシ１００を経由してウェブサーバ２００に転送されるものとする。
【００２５】
また、本実施の形態におけるリバースプロキシ１００は、ウェブサーバ２００から返送されたＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダを所定の形式に書き換えるＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０と、このＨＴＴＰレスポンスに含まれるリンクやロケーションヘッダ等を書き換えるリンク・ロケーションヘッダ書き換え部１５０と、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０及びリンク・ロケーションヘッダ書き換え部１５０によって書き換えられたＨＴＴＰレスポンスを返送先のユーザ端末３００に送信するＨＴＴＰレスポンス送信部１６０とをさらに備える。上記のＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０と、リンク・ロケーションヘッダ書き換え部１５０と、ＨＴＴＰレスポンス送信部１６０とで、ＨＴＴＰレスポンスをユーザ端末３００に転送するＨＴＴＰレスポンス転送手段を構成する。
【００２６】
ウェブサーバ名取得部１１０は、ＨＴＴＰリクエストに基づいてｐｒｅｆｉｘの記述からこのＨＴＴＰリクエストを送信するウェブサーバ２００を特定する。但し、後述のように本実施の形態では、ＨＴＴＰリクエストのｐｒｅｆｉｘ部分に、リバースドＦＱＤＮで記述されたウェブサーバのドメインに関する情報が入るので、このリバースドＦＱＤＮより直接ウェブサーバ名を取得する。そしてウェブサーバ名取得部１１０は、ＨＴＴＰリクエストの送信先のウェブサーバ名を保持すると共に、このＨＴＴＰリクエストをＵＲＬ書き換え部１２０に送る。
【００２７】
ＵＲＬ書き換え部１２０は、ウェブサーバ２００においてＨＴＴＰリクエストを送信するパスを特定するためにＨＴＴＰリクエストの送信先のＵＲＬを書き換える。このＵＲＬ書き換え部１２０は、送信されたＨＴＴＰリクエストからｐｒｅｆｉｘを削除して、このＨＴＴＰリクエストの送信先となるウェブサーバ２００における本来のＵＲＬを記述する。すなわちＵＲＬ書き換え部１２０は、ＨＴＴＰリクエストにおけるリバースドＦＱＤＮのドメインに関する情報を並べ替えると共に、このドメインに関する情報の構成要素を区切る文字列（“／”）を所定の文字列（“．”）に置換する。例えばＨＴＴＰリクエスト内に、ドメインに関する情報として“ｃｏｍ／ａｂｃ／ｗｗｗ”（リバースドＦＱＤＮ）が存在していた場合には、このドメインに関する情報をウェブサーバ２００における本来のドメイン“ｗｗｗ．ａｂｃ．ｃｏｍ”に書き換える。そして、このドメインにパスに関する情報を加えることにより、このＨＴＴＰリクエストの送信先となるウェブサーバ２００のＵＲＬ、例えば“ｈｔｔｐ：／／ｗｗｗ．ａｂｃ．ｃｏｍ／ｐａｔｈ１／ｉｎｄｅｘ．ｈｔｍｌ”が生成される。そしてＵＲＬ書き換え部１２０は、このＨＴＴＰリクエストをＨＴＴＰリクエスト転送部１３０に送る。
【００２８】
ＨＴＴＰリクエスト転送部１３０は、ウェブサーバ名取得部１１０によって送信先のウェブサーバ名が特定され、ＵＲＬ書き換え部１２０によって送信先のＵＲＬが書き換えられたＨＴＴＰリクエスト（２）を、当該特定されたウェブサーバ２００の所定のＵＲＬに転送する。
【００２９】
リバースプロキシ１００によって転送されたＨＴＴＰリクエストを受信したウェブサーバ２００は、このＨＴＴＰリクエストに基づいたＨＴＴＰレスポンスを、当該ＨＴＴＰリクエストを送信したユーザ端末３００に返送する。そして、このＨＴＴＰレスポンスは、リバースプロキシ１００によって中継される。
Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０は、ウェブサーバ２００から返送されたＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダの書き換えを行う。このＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０においてクッキーを書き換えるための変換規則については、図３に示す例を用いて説明する。
【００３０】
図３は、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０におけるＳｅｔ−Ｃｏｏｋｉｅヘッダの書き換え規則を示す図である。図３では、Ｓｅｔ−Ｃｏｏｋｉｅヘッダに含まれるドメインパラメータを削除し、パスパラメータを変換する際の変換規則を示す。ここでは、Ｓｅｔ−Ｃｏｏｋｉｅヘッダに含まれるパラメータを、ケース１〜ケース４の４つの場合に分けて、それぞれの場合においてどのように変換するかについて説明する。以下に示す変換規則の例では、図２に示したウェブサーバ２００から返送されるＨＴＴＰレスポンス（３）に含まれるＳｅｔ−ＣｏｏｋｉｅヘッダをＳｅｔ−Ｃｏｏｋｉｅヘッダ（３）、本実施の形態における変換規則にしたがってＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０において書き換えられたＨＴＴＰレスポンスに含まれるＳｅｔ−ＣｏｏｋｉｅヘッダをＳｅｔ−Ｃｏｏｋｉｅヘッダ（４）と示す。
【００３１】
ケース１：　ｄｏｍａｉｎ＝＜Ｗｅｂ　Ｓｅｒｖｅｒ　ｎａｍｅ＞；ｐａｔｈ＝／
すなわち、Ｓｅｔ−Ｃｏｏｋｉｅヘッダを返送するウェブサーバ２００のＦＱＤＮがパラメータの値で、且つ、このウェブサーバ２００のパスが“／”（ルートディレクトリ）である場合には、ウェブサーバ２００からは
（３）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／
というＳｅｔ−Ｃｏｏｋｉｅヘッダが返送される。このＳｅｔ−Ｃｏｏｋｉｅヘッダは、リバースプロキシ１００のＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０において
（４）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／
と変換される。
このようにケース１に示す変換規則では、Ｓｅｔ−Ｃｏｏｋｉｅヘッダのドメインパラメータ“ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ”が削除される。そして、このドメインパラメータの構成要素を逆順に並べ替えて、当該構成要素の区切り文字を“／”に置換して生成したリバースドＦＱＤＮ“ｃｏｍ／ａｂｃ／ｗｗｗ”をパスパラメータに埋め込む。さらに、パスパラメータにおいてウェブサーバ２００のドメインを示す部分とウェブサーバ２００における元々のパスを示す部分との境界部分には、区切り文字として“＿”が挿入される。以上のようにしてＳｅｔ−Ｃｏｏｋｉｅヘッダが変換されて、新たなパスパラメータが生成される。ここでは、パスパラメータにおける区切り文字として“＿”を用いているが、ホスト名に使用することができず、ＵＲＬの指定に用いることができる文字であれば特に問題はない。
【００３２】
ケース２：ｄｏｍａｉｎ＝＜ｄｏｍａｉｎ　ｎａｍｅ　ｏｆ　Ｗｅｂ　Ｓｅｒｖｅｒ＞；ｐａｔｈ＝／
すなわち、Ｓｅｔ−Ｃｏｏｋｉｅヘッダを返送するウェブサーバ２００のドメインがドメインパラメータの値（例えば“ｗｗｗ”を除いた“ａｂｃ．ｃｏｍ”）であり、且つ、パスが“／”である場合には、ウェブサーバ２００からは
（３）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ａｂｃ．ｃｏｍ；ｐａｔｈ＝／
というＳｅｔ−Ｃｏｏｋｉｅヘッダが返送され、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０において
（４）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／
と変換される。つまり、ケース２に示す変換規則では、Ｓｅｔ−Ｃｏｏｋｉｅヘッダのドメインパラメータ“ｄｏｍａｉｎ＝ａｂｃ．ｃｏｍ”が削除される。そして、この構成要素が逆順に並べ替えられ、且つ、この構成要素の区切り文字を置換して生成された“ｃｏｍ／ａｂｃ”がパスパラメータに埋め込まれてＳｅｔ−Ｃｏｏｋｉｅヘッダが生成される。
【００３３】
ケース３：ｄｏｍａｉｎ＝＜Ｗｅｂ　Ｓｅｒｖｅｒ　ｎａｍｅ＞；ｐａｔｈ！＝／
すなわち、Ｓｅｔ−Ｃｏｏｋｉｅヘッダを返送するウェブサーバ２００のＦＱＤＮがドメインパラメータの値であり、且つ、パスが“／”でない場合には、ウェブサーバ２００からは
（３）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／ｐａｔｈ１／
というＳｅｔ−Ｃｏｏｋｉｅヘッダが返送され、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０において
（４）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／ｐａｔｈ１／
と変換される。つまり、ケース３に示す変換規則では、Ｓｅｔ−Ｃｏｏｋｉｅヘッダのドメインパラメータ“ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ”が削除される。そして、この構成要素が逆順に並べ替えられ、且つ、この構成要素の区切り文字を置換して生成された“ｃｏｍ／ａｂｃ／ｗｗｗ”と元のパスパラメータの値“／ｐａｔｈ１／”とから、新しいパスパラメータの値“／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／ｐａｔｈ１／”が生成される。
【００３４】
ケース４：ｄｏｍａｉｎ＝＜ｄｏｍａｉｎ　ｎａｍｅ　ｏｆ　Ｗｅｂ　Ｓｅｒｖｅｒ　＞；ｐａｔｈ！＝／
すなわち、Ｓｅｔ−Ｃｏｏｋｉｅヘッダを返送するウェブサーバ２００のドメインがドメインパラメータの値であり、且つ、パスが“／”でない場合である。この場合は本実施の形態ではサポートできない。しかしながらこのケースは、複数のウェブサーバ２００に同じパスが存在していることを意味し、殆ど有り得ないケースである。
【００３５】
また、リンク・ロケーションヘッダ書き換え部１５０では、このＨＴＴＰレスポンス内のリンク及びロケーションヘッダの内容を書き換える。すなわち、ＨＴＴＰリクエストに応じて発生するＨＴＴＰレスポンスがリバースプロキシ１００を経由していることを示す内容となるように、このＨＴＴＰレスポンス内のリンク及びロケーションヘッダの内容を書き換える（＜ＲＦＱＤＮ＞とはリバースドＦＱＤＮのことである）。
ｈｔｔｐ：／／＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞／＜ＲＦＱＤＮ＞／＿／…
そして、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０及びリンク・ロケーションヘッダ書き換え部１５０において書き換えられたＨＴＴＰレスポンスをＨＴＴＰレスポンス送信部１６０に送る。このリンク・ロケーションヘッダ書き換え部１５０において書き換えられるＨＴＴＰレスポンスのデータについては、後に図８〜図１０を参照して具体的に説明する。
ＨＴＴＰレスポンス送信部１６０は、リバースドＦＱＤＮに書き換えられたＳｅｔ−Ｃｏｏｋｉｅヘッダを含むＨＴＴＰレスポンス（４）を、ＨＴＴＰリクエストを行ったユーザ端末３００のブラウザ３００ａに送信する。
【００３６】
このようにしてＨＴＴＰレスポンスがユーザ端末３００のブラウザ３００ａにおいて受信されると、ブラウザ３００ａはＨＴＴＰリクエストにて要求されたコンテンツをウィンドウに表示する。また、ブラウザ３００ａには、ＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダにしたがってクッキーが設定される。
そして、次回以降、このクッキーの有効範囲のＨＴＴＰリクエストを送信する際には、このＨＴＴＰリクエストのリクエストヘッダにクッキーを埋め込んで送信する。次回以降にリクエストヘッダにクッキーが埋め込まれたＨＴＴＰリクエストを送信する例については、以下に示す図６を用いて説明する。
【００３７】
図４は、本実施の形態のネットワークシステムにおけるデータの流れを示す図である。
図４に示すように、このネットワークシステムは、例えば、ウェブサーバ２０１（ホスト名：“ｗｗｗ．ａｂｃ．ｃｏｍ”）、ウェブサーバ２０２（ホスト名：“ｗｗｗ２．ａｂｃ．ｃｏｍ”）、ウェブサーバ２０３（ホスト名：“ｗｗｗ３．ｓｕｂ．ａｂｃ．ｃｏｍ”）、ウェブサーバ２０４（ホスト名：“ｗｗｗ．ｘｙｚ．ｃｏｍ”）の複数のウェブサーバ２００と、リバースプロキシ１００（ホスト名：“ｒｐｒｏｘｙ．ｉｊｋ．ｃｏｍ”）と、ユーザ端末３００とから構成されるものとする。
【００３８】
図４に示すネットワークシステムにおいて、ユーザ端末３００からリバースプロキシ１００を介して行われたＨＴＴＰリクエストに対するＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダについて説明する。
このとき、ウェブサーバ２０１（“ｗｗｗ．ａｂｃ．ｃｏｍ”）からは、ユーザ端末３００に対してクッキーを設定するための、以下の２つのＳｅｔ−Ｃｏｏｋｉｅヘッダ
（Ａ１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ２＝ｖａｌｕｅ２；ｄｏｍａｉｎ＝　ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
を含むＨＴＴＰレスポンスが返送されるものとする。
また、ウェブサーバ２０３（“ｗｗｗ３．ｓｕｂ．ａｂｃ．ｃｏｍ”）からは、ユーザ端末３００に対してクッキーを設定するための、以下のＳｅｔ−Ｃｏｏｋｉｅヘッダ
（Ｃ１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ３＝ｖａｌｕｅ３；ｄｏｍａｉｎ＝ｓｕｂ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
を含むＨＴＴＰレスポンスが返送されるものとする。
【００３９】
上記の（Ａ１），（Ｃ１）で示した場合におけるクッキー“ｎａｍｅ１”，“ｎａｍｅ２”，“ｎａｍｅ３”それぞれの有効範囲となるウェブサーバ２００を図５に示す。図５に示すように、“ｎａｍｅ１”によるクッキーの有効範囲には、ウェブサーバ２０１（“ｗｗｗ．ａｂｃ．ｃｏｍ”）が含まれる。また、“ｎａｍｅ２”によるクッキーの有効範囲には、ウェブサーバ２０１（“ｗｗｗ．ａｂｃ．ｃｏｍ”）、ウェブサーバ２０２（“ｗｗｗ２．ａｂｃ．ｃｏｍ”）、及びウェブサーバ２０３（“ｗｗｗ３．ｓｕｂ．ａｂｃ．ｃｏｍ”）が含まれる。さらに、“ｎａｍｅ３”によるクッキーの有効範囲には、ウェブサーバ２０３（“ｗｗｗ３．ｓｕｂ．ａｂｃ．ｃｏｍ”）が含まれる。
【００４０】
ところで、これら（Ａ１），（Ｃ１）に示したＳｅｔ−Ｃｏｏｋｉｅヘッダは、リバースプロキシ１００のＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０によって以下のように変換される。
すなわちＳｅｔ−Ｃｏｏｋｉｅヘッダ
（Ａ１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
は、上記のケース１の変換規則により、
（Ａ２）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／；
となる。
また、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ
（Ａ１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ２＝ｖａｌｕｅ２；ｄｏｍａｉｎ＝　ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
は、上記のケース２の変換規則により、
（Ａ２）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ２＝ｖａｌｕｅ２；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／；
となる。
さらに、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ
（Ｃ１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
は、上記のケース２の変換規則により、
（Ｃ２）Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ３＝ｖａｌｕｅ３；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／ｓｕｂ／；
となる。
【００４１】
よって、その後のユーザ端末３００から各ウェブサーバにアクセスする際、ＨＴＴＰリクエストには、それぞれ図６に示すようなクッキーが埋め込まれる。
すなわち、ユーザ端末３００からウェブサーバ２０１へのＨＴＴＰリクエスト（Ａ３）のリクエストヘッダには、図５に示したクッキーの有効範囲に対応するクッキーが埋め込まれ
ｈｔｔｐ：／／ｒｐｒｏｘｙ．ｉｊｋ．ｃｏｍ／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／…
Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｎａｍｅ２＝ｖａｌｕｅ２；
として送信される。
また、ユーザ端末３００からウェブサーバ２０２へのＨＴＴＰリクエスト（Ｂ３）のリクエストヘッダには、図５に示したクッキーの有効範囲に対応するクッキーが埋め込まれ
ｈｔｔｐ：／／ｒｐｒｏｘｙ．ｉｊｋ．ｃｏｍ／ｃｏｍ／ａｂｃ／ｗｗｗ２／＿／…
Ｃｏｏｋｉｅ：ｎａｍｅ２＝ｖａｌｕｅ２；
として送信される。
さらに、ユーザ端末３００からウェブサーバ２０３へのＨＴＴＰリクエスト（Ｃ３）のリクエストヘッダには、図５に示したクッキーの有効範囲に対応するクッキーが埋め込まれ
ｈｔｔｐ：／／ｒｐｒｏｘｙ．ｉｊｋ．ｃｏｍ／ｃｏｍ／ａｂｃ／ｓｕｂ／ｗｗｗ３／＿／…
Ｃｏｏｋｉｅ：ｎａｍｅ２＝ｖａｌｕｅ２；ｎａｍｅ３＝ｖａｌｕｅ３；
として送信される。
またさらに、ユーザ端末３００からウェブサーバ２０４へのＨＴＴＰリクエスト（Ｄ３）のリクエストヘッダは
ｈｔｔｐ：／／ｒｐｒｏｘｙ．ｉｊｋ．ｃｏｍ／ｃｏｍ／ｘｙｚ／ｗｗｗ／＿／…
として送信されるが、このＨＴＴＰリクエスト（Ｄ３）に対応するクッキーは存在しないのでリクエストヘッダにクッキーは埋め込まれない。
以上のように、図６に示した２回目以降に送信されるＨＴＴＰリクエストに含まれるクッキーは、図５に示したクッキーの有効範囲となるウェブサーバ２００に一致している。換言すれば、リバースプロキシ１００を介してクッキーが透過的に扱われているといえる。
【００４２】
これら（Ａ３）〜（Ｃ３）のＨＴＴＰリクエストは、リバースプロキシ１００のウェブサーバ名取得部１１０及びＵＲＬ書き換え部１２０において所定の処理を経て（Ａ４）〜（Ｃ４）に変換される。そしてＨＴＴＰリクエスト転送部１３０によって、ＨＴＴＰリクエスト（Ａ４）はウェブサーバ２０１に、ＨＴＴＰリクエスト（Ｂ４）はウェブサーバ２０２に、ＨＴＴＰリクエスト（Ｃ４）はウェブサーバ２０３にそれぞれ転送される。
また同様にして、ＨＴＴＰリクエスト転送部１３０によって、（Ｄ３）のＨＴＴＰリクエストは（Ｄ４）としてウェブサーバ２０４に転送される。
【００４３】
ところで、通常のＨＴＴＰリクエストにおいて使用されるポート番号は８０番であるが、本実施の形態では、ＨＴＴＰリクエストを送信する送信先のウェブサーバ２００のポート番号がデフォルトのポート番号ではなく、明示的に指定する必要がある場合は、例えば以下のようにポート番号を指定すればよい。
ｈｔｔｐ：／／＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞／＜ＲＦＱＤＮ＞／＿＜ｐｏｒｔ＞／＜ｐａｔｈ　ｎａｍｅ　ｏｆ　Ｗｅｂ　ｓｅｒｖｅｒ＞
このようにして“＜ｐｏｒｔ＞”部分にウェブサーバ２００のポート番号を指定しておけば、ウェブサーバ２００において通常とは異なるポートがＨＴＴＰリクエスト用のポートとして用いられている場合であっても、ＨＴＴＰリクエストを当該ウェブサーバ２００に送信することができる。
【００４４】
本実施の形態では、＜ｐｒｅｆｉｘ＞として“＜ＲＦＱＤＮ＞＿”を用いているが、＜ＲＦＱＤＮ＞の前に固定の文字列、例えば“ｘｘｘ／”が付いていてもクッキーを透過的に扱うことができる。つまり、ブラウザ３００ａがリバースプロキシ１００を経由してウェブサーバ２０１（“ｗｗｗ．ａｂｃ．ｃｏｍ”）の“／ｉｎｄｅｘ．ｈｔｍｌ”にアクセスする場合は、以下のようになる。
ｈｔｔｐ：／／＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞／ｘｘｘ／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／ｉｎｄｅｘ．ｈｔｍｌ
そして、ウェブサーバ２０１が以下のようなＳｅｔ−Ｃｏｏｋｉｅヘッダを返した場合、
Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｄｏｍａｉｎ＝ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
リバースプロキシ１００は、このＳｅｔ−Ｃｏｏｋｉｅヘッダを以下のように変換してユーザ端末３００に送る。
Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｐａｔｈ＝／ｘｘｘ／ｃｏｍ／ａｂｃ／；
【００４５】
本実施の形態では、“ｗｗｗ．ａｂｃ．ｃｏｍ”を変換することにより、“ｃｏｍ／ａｂｃ／ｗｗｗ”とした。しかし、ドメインパラメータを指定する場合において、“．ｃｏｍ”や“．ｎｅｔ”、又は“．ｃｏ．ｊｐ”といったトップレベルドメインだけの指定を行うことはできず、常に１つ下の階層（サブドメイン）からでなければ、このドメインパラメータの指定を行うことができない。つまりドメインパラメータの指定は、“ａｂｃ．ｃｏｍ”や“ａｂｃ．ｎｅｔ”、又は“ａｂｃ．ｃｏ．ｊｐ”というように、１つ下の階層から行わなければならない。よって、リバースプロキシ１００へのアクセスパスは、最低限指定すべきドメインを１つにまとめて、以下のようにしても良い。
（図４、Ａ３）ｈｔｔｐ：／／＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞／ａｂｃ−ｃｏｍ／ｗｗｗ／＿／ｉｎｄｅｘ．ｈｔｍｌ
（図４、Ｃ３）ｈｔｔｐ：／／＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞／ａｂｃ−ｃｏｍ／ｓｕｂ／ｗｗｗ３／＿／ｉｎｄｅｘ．ｈｔｍｌ
これらのＨＴＴＰリクエストを受け取ったリバースプロキシ１００は、区切り文字“＿”の前までの文字列から転送先のウェブサーバ名をそれぞれ、“ｗｗｗ．ａｂｃ．ｃｏｍ”、“ｗｗｗ３．ｓｕｂ．ａｂｃ．ｃｏｍ”と判断し、それぞれのウェブサーバ２００に対して以下のＨＴＴＰリクエストを送る。
（図４、Ａ４）ｈｔｔｐ：／／ｗｗｗ．ａｂｃ．ｃｏｍ／ｉｎｄｅｘ．ｈｔｍｌ
（図４、Ｃ４）ｈｔｔｐ：／／ｗｗｗ３．ｓｕｂ．ａｂｃ．ｃｏｍ／ｉｎｄｅｘ．ｈｔｍｌ
また、これらのウェブサーバ２００が以下のようなＳｅｔ−Ｃｏｏｋｉｅヘッダを返したとする。
（図４、Ａ１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｉｄ１＝００１；ｄｏｍａｉｎ＝ｗｗｗ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
（図４、Ｃ１）Ｓｅｔ−Ｃｏｏｋｉｅ：ｉｄ１＝００１；ｄｏｍａｉｎ＝ｓｕｂ．ａｂｃ．ｃｏｍ；ｐａｔｈ＝／；
リバースプロキシ１００は、このＳｅｔ−Ｃｏｏｋｉｅヘッダを以下のように変換する。
（図４、Ａ２）Ｓｅｔ−Ｃｏｏｋｉｅ：ｉｄ１＝００１；ｐａｔｈ＝／ａｂｃ−ｃｏｍ／ｗｗｗ／＿／；
（図４、Ｃ２）Ｓｅｔ−Ｃｏｏｋｉｅ：ｉｄ１＝００１；ｐａｔｈ＝／ａｂｃ−ｃｏｍ／ｓｕｂ／；
このような＜ｐｒｅｆｉｘ＞を用いてもクッキーを透過的に扱うことができる。
【００４６】
また、図４を用いて説明した例では、リバースプロキシ１００が返すＳｅｔ−Ｃｏｏｋｉｅヘッダ内でドメインパラメータを指定していないが、このような場合Ｓｅｔ−Ｃｏｏｋｉｅヘッダは、ＨＴＴＰレスポンスを送信したサーバを示す。そこで図４に示した例において、例えば
Ｓｅｔ−Ｃｏｏｋｉｅ：ｎａｍｅ１＝ｖａｌｕｅ１；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／；ｄｏｍａｉｎ＝＜ｒｅｖｅｒｓｅ　ｐｒｏｘｙ＞といったように、Ｓｅｔ−Ｃｏｏｋｉｅヘッダのドメインパラメータを自装置のサーバ名に置換して、このリバースプロキシ１００のサーバ名を明示的に指定しても良い。
【００４７】
図７は、本実施の形態のリバースプロキシ１００における処理を示すフローチャートである。図７に示すフローチャートでは、リバースプロキシ１００において、ユーザ端末３００から送信されたＨＴＴＰリクエスト、及びウェブサーバ２００から返送されたＨＴＴＰレスポンスに対して行われる処理について説明する。また、以下に示す各処理において用いられるデータ（ＨＴＴＰレスポンス）を図８〜図１０に示す。
ユーザ端末３００からクッキーが埋め込まれたＨＴＴＰリクエストが送信されると、このＨＴＴＰリクエストは、リバースプロキシ１００によって受信され、ウェブサーバ名取得部１１０に渡される（ステップ７０１）。以下では、ステップ７０１において受信されたＨＴＴＰリクエストが
（Ｒｅｑ１）ＧＥＴ　／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／ｉｎｄｅｘ．ｈｔｍｌ　ＨＴＴＰ／１．１
であるものとして説明する。
【００４８】
ステップ７０１において受信されたＨＴＴＰリクエストからは、ウェブサーバ名取得部１１０によって、ｐｒｅｆｉｘに基づいてウェブサーバ名が取得される（ステップ７０２）。これにより、このＨＴＴＰリクエストの送信先のウェブサーバ２００が特定される。ステップ７０２においてＨＴＴＰリクエストの送信先のウェブサーバ名が特定されたＨＴＴＰリクエストは、ＵＲＬ書き換え部１２０に送信される。ＵＲＬ書き換え部１２０では、ステップ７０２においてウェブサーバ名取得部１１０において特定された情報に基づいてＵＲＬの書き換えを行う（ステップ７０３）。すなわちステップ７０３においてＵＲＬ書き換え部１２０は、ＨＴＴＰリクエストの送信先となるウェブサーバ２００における本来のＵＲＬとパス“／ｗｗｗ．ａｂｃ．ｃｏｍ／ｉｎｄｅｘ．ｈｔｍｌ”を取得する。ＨＴＴＰリクエストの送信先のウェブサーバ２００（“ｗｗｗ．ａｂｃ．ｃｏｍ”）、及びこのウェブサーバ２００内におけるＵＲＬ（“ｗｗｗ．ａｂｃ．ｃｏｍ”のルートディレクトリの“ｉｎｄｅｘ．ｈｔｍｌ”）を特定されたＨＴＴＰリクエスト
（Ｒｅｑ２）ＧＥＴ　／ｉｎｄｅｘ．ｈｔｍｌ　ＨＴＴＰ／１．１
は、ＨＴＴＰリクエスト転送部１３０に送信される。そしてこのＨＴＴＰリクエストは、ＨＴＴＰリクエスト転送部１３０によって、ステップ７０２で特定されたウェブサーバ２００に転送される（ステップ７０４）。
【００４９】
ＨＴＴＰリクエストを受け取ったウェブサーバ２００は、リバースプロキシ１００から転送されたＨＴＴＰリクエストに応じたＨＴＴＰレスポンスが、ＨＴＴＰリクエストを行ったユーザ端末３００に対して送信される。このＨＴＴＰレスポンスには、後々行われるＨＴＴＰリクエストにおいてユーザの状態を通知するためのＣｏｏｋｉｅヘッダが埋め込まれて返送される。ウェブサーバ２００から返送されたＨＴＴＰレスポンスは、一旦リバースプロキシ１００を中継してユーザ端末３００に返送される。すなわち、ウェブサーバ２００から返送されたＨＴＴＰレスポンスは、リバースプロキシ１００によって受信され、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０に渡される（ステップ７０５）。
【００５０】
ステップ７０５において受信されるＨＴＴＰレスポンスの一例を図８に示す。図８に示すように、このＨＴＴＰレスポンスにはＳｅｔ−Ｃｏｏｋｉｅヘッダ
Ｓｅｔ−Ｃｏｏｋｉｅ：ｓｅｓｓｉｏｎｉｄ＝００１；ｐａｔｈ＝／；ｄｏｍａｉｎ＝ａｂｃ．ｃｏｍ；
が含まれている。そしてこのＳｅｔ−Ｃｏｏｋｉｅヘッダには、ユーザを特定するｉｄに相当する“ｓｅｓｓｉｏｎｉｄ＝００１”と、このＳｅｔ−Ｃｏｏｋｉｅヘッダによって設定されたクッキーをブラウザ３００ａが送り返す返送先のウェブサーバ２００のＵＲＬ（パス）を特定する“ｐａｔｈ＝／”と、返送先のウェブサーバのドメインを特定する“ｄｏｍａｉｎ＝ａｂｃ．ｃｏｍ”とが含まれる。また、このＨＴＴＰレスポンスは、Ｓｅｔ−Ｃｏｏｋｉｅヘッダの他にもウェブサーバ２００から返送される種々のヘッダ情報を含む。
【００５１】
リバースプロキシ１００においてＨＴＴＰレスポンスが受信されたら、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０では、ＨＴＴＰレスポンス内にＳｅｔ−Ｃｏｏｋｉｅヘッダが存在しているか否かの判断が行われる（ステップ７０６）。ステップ７０６において、ＨＴＴＰレスポンス内にＳｅｔ−Ｃｏｏｋｉｅヘッダが存在していると判断された場合には、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０においてＳｅｔ−Ｃｏｏｋｉｅヘッダの書き換えが行われる（ステップ７０７）。ステップ７０７におけるＳｅｔ−Ｃｏｏｋｉｅヘッダの書き換えは、図３に示した変換規則にしたがって行われる。すなわち、ドメインパラメータを削除し、このドメインを構成する構成要素を逆順に並べ替え、さらにこの構成要素を区切る区切り文字“．”を“／”として置換したものを当該Ｓｅｔ−Ｃｏｏｋｉｅヘッダのパスパラメータに埋め込む。ステップ７０６において、ＨＴＴＰレスポンス内にＳｅｔ−Ｃｏｏｋｉｅヘッダが存在していないと判断された場合には、ステップ７０７の処理は省略される。
【００５２】
ステップ７０７においてＳｅｔ−Ｃｏｏｋｉｅヘッダが書き換えられたＨＴＴＰレスポンスの一例を図９に示す。図９に示すように、ステップ７０７において書き換えられたＳｅｔ−Ｃｏｏｋｉｅヘッダは
Ｓｅｔ−Ｃｏｏｋｉｅ：ｓｅｓｓｉｏｎｉｄ＝００１；ｐａｔｈ＝／ｃｏｍ／ａｂｃ／；
となる。上記のＳｅｔ−Ｃｏｏｋｉｅヘッダは、図３に示した変換規則にしたがって書き換えられていることがわかる。
【００５３】
ステップ７０７においてＳｅｔ−ＣｏｏｋｉｅヘッダがリバースドＦＱＤＮに書き換えられたＨＴＴＰレスポンスは、Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部１４０からリンク・ロケーションヘッダ書き換え部１５０に送信される。そして、このＨＴＴＰリクエストを受信したリンク・ロケーションヘッダ書き換え部１５０では、コンテンツ内のリンク及びロケーションヘッダの書き換えを行う（ステップ７０８）。
【００５４】
ステップ７０８において、リンクが書き換えられた状態のＨＴＴＰレスポンスの一例を図１０に示す。ステップ７０８において書き換えられたリンク先の指定部分は、図８及び図９に示した
“／ｍｅｎｕ１．ｈｔｍｌ”
“／ｍｅｎｕ２．ｈｔｍｌ”
“／ｍｅｎｕ３．ｈｔｍｌ”
から、図１０に示す
“／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／ｍｅｎｕ１．ｈｔｍｌ”
“／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／ｍｅｎｕ２．ｈｔｍｌ”
“／ｃｏｍ／ａｂｃ／ｗｗｗ／＿／ｍｅｎｕ３．ｈｔｍｌ”
といったように、リバースドＦＱＤＮが付与された絶対パスに書き換えられる。
【００５５】
以上のようにして書き換えられたブラウザが認識可能な形式のＳｅｔ−Ｃｏｏｋｉｅヘッダを含むＨＴＴＰレスポンスは、ＨＴＴＰレスポンス送信部１６０によりステップ７０１において受信されたＨＴＴＰリクエストを送信したユーザ端末３００に対して送信される（ステップ７０９）。そして、ユーザ端末３００のブラウザには、このＨＴＴＰレスポンス及びこのＨＴＴＰレスポンスとリンクしたデータやファイルに基づいたコンテンツが表示され、ＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダに基づいて、所定の有効範囲に対するクッキーがブラウザに保持される。
【００５６】
以上のように本実施の形態におけるリバースプロキシ１００は、ドメインパラメータを削除し、パスパラメータを書き換えた　Ｓｅｔ−Ｃｏｏｋｉｅヘッダをユーザ端末３００に送信する。そうすることによりユーザ端末３００のブラウザ３００ａには、リバースプロキシ１００を介して返送されたＨＴＴＰレスポンスに含まれるＳｅｔ−Ｃｏｏｋｉｅヘッダに基づいてクッキーが設定され、保持される。
そして次回以降、ブラウザ３００ａが送信するＨＴＴＰリクエストにＣｏｏｋｉｅヘッダが付いている場合、リバースプロキシ１００は、このＣｏｏｋｉｅヘッダをそのまま対応するウェブサーバ２００に転送すれば、そのＣｏｏｋｉｅはウェブサーバ２００がＳｅｔ−Ｃｏｏｋｉｅヘッダ内で指定したドメイン、パスに合致している範囲にのみ送られることになる。
【００５７】
【発明の効果】
以上説明したように、本発明によれば、リバースプロキシを経由してサーバへアクセスするネットワークシステムにおいて、サーバによって設定されたクッキーを透過的に扱うようにすることができる。
【００５８】
また、本発明によれば、サーバの設定したクッキーを透過的に扱うためにＳｅｔ−Ｃｏｏｋｉｅを書き換える機能を備えたリバースプロキシを提供することができる。
【図面の簡単な説明】
【図１】本実施の形態におけるネットワークシステムの構成を示す図である。
【図２】本実施の形態におけるリバースプロキシの機能を示すブロック図である。
【図３】本実施の形態におけるＳｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部におけるクッキーの変換規則を示す図である。
【図４】本実施の形態のネットワークシステムにおけるデータの流れを示す図である。
【図５】本実施の形態の変換規則におけるクッキーの有効範囲となるウェブサーバの一例を示す図である。
【図６】各ケースに対応したリバースドＦＱＤＮのＳｅｔ−Ｃｏｏｋｉｅヘッダの一例を示す図である。
【図７】本実施の形態のリバースプロキシにおける処理を示すフローチャートである。
【図８】本実施の形態のリバースプロキシにおいて受信されるレスポンスデータの一例を示す図である。
【図９】本実施のリバースプロキシにおいてＳｅｔ−Ｃｏｏｋｉｅヘッダが書き換えられたレスポンスデータの一例を示す図である。
【図１０】本実施の形態のリバースプロキシから送信されるレスポンスデータの一例を示す図である。
【図１１】ウェブサーバから送信されるＳｅｔ−Ｃｏｏｋｉｅヘッダによって決められるクッキーの有効範囲と、このクッキーの有効範囲であるウェブサーバに送信されるＨＴＴＰリクエスト及びクッキーの一例を示す図である。
【図１２】リバースプロキシにおいて管理されるテーブルを示す図である。
【符号の説明】
１００…リバースプロキシ、１１０…ウェブサーバ名取得部、１２０…ＵＲＬ書き換え部、１３０…ＨＴＴＰリクエスト転送部、１４０…Ｓｅｔ−Ｃｏｏｋｉｅヘッダ書き換え部、１５０…リンク・ロケーションヘッダ書き換え部、１６０…ＨＴＴＰレスポンス送信部、２００…ウェブサーバ、３００…ユーザ端末、４００…ネットワーク、５００…ネットワーク
【図１】
2004094805.tif 000003
【図２】
2004094805.tif 000004
【図３】
2004094805.tif 000005
【図４】
2004094805.tif 000006
【図５】
2004094805.tif 000007
【図６】
2004094805.tif 000008
【図７】
2004094805.tif 000009
【図８】
2004094805.tif 000010
【図９】
2004094805.tif 000011
【図１０】
2004094805.tif 000012
【図１１】
2004094805.tif 000013
【図１２】
2004094805.tif 000014