プロローグで見てきたように,Webアクセスに使うHTTPにはセッションの概念がなく,そのままでは複数Webページをまたがった一連の通信を「セッション」として認識できない。そこでWebサイトがWebブラウザとの間のセッションを認識し,処理の進行状態を把握する「セッション管理」のしくみが必要になる。ステップ1ではこのしくみを見ていこう。

セッションIDでアクセスをのり付け

 セッション管理は,セッションを認識するところから始まる。セッションの認識は,「セッションID」のやりとりで実現する(図1-1)。セッションIDは,セッションを識別するための短いデータである。WebサイトがセッションIDを発行してWebブラウザに預け,一連のアクセスで同じセッションIDを送信してもらう。同じセッションIDが送られてきたことで,同一セッションと認識する。

図1-1●1回ごとに切れる情報を「セッションID」でのり付けする
Webサイトは,複数のWebアクセスにセッションを示す情報を付けて関連付ける。このために使うのが「セッションID」だ。実際のセッションIDは十数桁以上の乱数を使うことが多い。セッションIDに対応するセッション情報は,Webサイト内に「セッション・オブジェクト」を生成してそこに保存する。
[画像のクリックで拡大表示]

 セッションIDのやりとりを順番に見ていこう。セッションの開始のきっかけは,Webブラウザからのアクセスだ。最初のWebアクセスを受け付けたWebサイトは,Webページを生成するのと並行して,セッションIDを生成する。セッションIDには十数桁以上の乱数が使われることが多い。Webサイトは,セッションIDと共にセッションを管理するデータを書き込むための「セッション・オブジェクト」も作っておく。

 Webサイトは,応答のWebページと一緒に生成したセッションIDを送る。これでWebサイト側は,セッションを確立して次のアクセスを待つ状態になる。

 セッションIDを受け取ったWebブラウザは,そのサイトへの一連のWebアクセスのときに,Webページの要求と共にセッションIDを送信する。同一セッションであれば同じセッションIDが送られてくるので,Webサイトは確実にセッションを識別できる。さらにWebサイトは,送られてきたセッションIDに対応するセッション・オブジェクトを参照して,そこに書き込まれた情報を基に処理を進める。

よく使われる「Cookie」

 では,WebサイトとWebブラウザは,どのような手段でセッションIDをやりとりしているのだろうか。その方法は,おもに3種類ある(図1-2)。

図1-2●セッションIDの受け渡し手段は3種類ある
いずれもWebサイトで生成したセッションIDを送り,WebブラウザにセッションIDを返してもらう。中でもよく使われるのはCookieを使う方法である。
[画像のクリックで拡大表示]

 最もポピュラーなのは,Cookieを使う方法だ(図1-2のA)。Cookieは,WebサイトとWebブラウザの間でやりとりする小さなデータ。まずWebサイトがWebブラウザにCookieを送り,次回以降のアクセスで送り返してもらうことができる。Webサイトの多くはこのCookieでセッションを管理する。

 Cookieを使うWebサイトは,Webブラウザに送るHTTPレスポンスの拡張ヘッダーに,CookieとしてセッションIDを書き込んで送る。Cookieを受けとったWebブラウザは,そのCookieを持っておく。そして,そのWebサイトへの一連のアクセスのときに,HTTPリクエストの拡張ヘッダーにCookieを付けて送信する。Webサイトは,受け取ったCookieに含まれるセッションIDを見てセッションを識別するわけだ。

 Cookieは,Webサイトが指定した有効期限までの間,Webブラウザが保存し続ける。Webブラウザはこの間,いつWebサイトにアクセスしても同じCookieを送ることになる。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら