サーブレットの基礎知識

Cookieによるセッション管理の実現

テンアートニ 野宗貴史
2001/2/2

 セッション管理を実現する方法は幾つかありますが、そのうちの1つはCookieを使用する方法です。このCookieとは何かという点から説明を始めます。

 Cookieは、“パラメータ名=値”という形式を持った文字列情報です。クライアント固有の情報をCookieに保管することで、サーバ側は各クライアントに対応した処理を行うことができます。Cookieは、サーバ側(CGIやサーブレット)で作成され、HTTPのヘッダに埋め込まれる形で、クライアントに送信されます。クライアント(ブラウザ)は、受け取ったCookieをメモリまたはハードディスクに保存します。クライアントがサーバにアクセスするときは、自動的に保存していたすべてのCookieがHTTPのヘッダに埋め込まれてサーバに送信されます。

 上図は、ログイン処理を行い、商品を購入するようなHTTPのやりとりにおいて、クライアント固有の情報をCookieに保管する場合の例です。まず、クライアントからサーバにログイン要求があり、それに対してサーバから商品リストのHTMLを送信するときに、新たに作成したCookieを付加して送信します。このCookieには、“ClientID=XXXX0001”というようなクライアントを識別するための情報が格納されています。次に、クライアントが購入する商品を決定して、その情報をサーバに送信するときには、先ほどサーバから送信されたCookie(ClientID=XXXX0001)が付加されます。これにより、サーバ側では、特定のクライアント(ClientID=XXXX0001)の人が商品を購入するということが分かります。つまり、クライアント固有の処理が行えるということです。この後、サーバが次の画面をクライアントに送信するときに、新たに作成したCookie(ItemID=YYYY1234)を付加して送信します。その次に、クライアントからサーバにアクセスするときには、2つのCookie(ClientID, ItemID)が付加されて送信されます。このように、クライアント固有の情報をCookieとして保管することで、セッション管理を実現することができます。

 Cookieは便利な仕組みですが、実体はただの文字列情報であり、クライアントからサーバにアクセスするたびに送信されますので、盗聴されやすいという欠点もあります。従って、クライアント固有のあらゆる情報をCookieでクライアントに送信するのはあまり望ましくありません。

 これを解決する方法は、「サーブレットにおけるセッション管理の実現」を参照してください。

 

「Java Solution FAQ」

 




Java Agile フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Java Agile 記事ランキング

本日 月間