Cosminexus アプリケーションサーバ V8 機能解説 基本・開発編(Webコンテナ)
![[目次]](FIGURE/CONTENT.GIF)
![[用語]](FIGURE/GLOSS.GIF)
![[索引]](FIGURE/INDEX.GIF)
![[前へ]](FIGURE/FRONT.GIF)
2.7.4 Webクライアントが保持する無効なセッションIDの削除
アプリケーションサーバでは,Webクライアントが保持する無効なセッションIDを削除します。これによって,無効なセッションIDのWebクライアントからの送信を抑止します。
HTTPセッションを無効化した場合,または無効なセッションIDを含むHTTPセッションを受信した場合,Webコンテナによって,無効なセッションIDを表すHTTP Cookie情報を削除するためのHTTP CookieがHTTPレスポンスのヘッダに付加されます。これによって,無効なセッションIDが削除されます。
無効なセッションIDを表すHTTP Cookie情報を削除するためのHTTP Cookieとは,次のすべての条件を満たすHTTP Cookieを指します。
- セッションIDを示すHTTP Cookieであり,名称は「JSESSIONID」である。
- 値が「""」(空文字列)である。
- HTTP Cookieの有効期限に,経過した期限となる正の数が設定されている。
HTTPレスポンスのヘッダに,無効なセッションIDを表すHTTP Cookie情報を削除するためのHTTP Cookieが付加されるのは,次の二つの場合です。
- HTTPセッションが無効化された。
- J2EEサーバに存在しないセッションIDを受信した。
以降でそれぞれの場合について説明します。
- Webサーバ連携機能を使用する場合の注意事項
- レスポンスのステータスコードが304(Not Modified)である場合に,Webサーバの仕様でSet-Cookieヘッダが削除されるときがあります。このとき,無効なセッションIDを表すHTTP Cookie情報を削除するためのHTTP Cookieも付加されなくなるため,Webクライアントが保持する無効なセッションIDの削除ができなくなります。
- <この項の構成>
- (1) HTTPセッションが無効化された場合
- (2) J2EEサーバに存在しないセッションIDを受信した場合
- (3) Webクライアントが保持する無効なセッションIDの削除をする場合の注意事項
(1) HTTPセッションが無効化された場合
次の条件をすべて満たす場合,無効なセッションIDを表すHTTP Cookie情報を削除するためのHTTP CookieがHTTPレスポンスのヘッダに付加されます。
- セッションIDがHTTP Cookieを使用して通知された。
- Webアプリケーション内でHTTPレスポンスがコミットされる前にHTTPセッションが無効化された※1。
- HTTPレスポンスのコミット時にHTTPセッションが存在しない※2。
- 注※1
- HTTPレスポンスのヘッダは,レスポンスがコミットされた時点でWebクライアントに送信されるため,コミットしたあとのレスポンスにはHTTP Cookieを付加できません。そのため,Webアプリケーション内でHTTPレスポンスがコミットされたあとでHTTPセッションが無効化された場合,HTTP Cookie情報を削除するためのHTTP Cookieは付加されません。しかし,次回リクエスト受信時に,存在しないセッションIDを受信することになるため「2.7.4(2) J2EEサーバに存在しないセッションIDを受信した場合」に該当し,HTTP Cookie情報が削除されます。
- 注※2
- HTTPレスポンスのコミット時に新しいHTTPセッションが作成されていた場合は,新しいセッションIDを示すHTTP CookieでWebクライアントのHTTP Cookie情報が上書きされるため,HTTP Cookie情報の削除は不要になります。
なお,次の条件のどちらかを満たす場合,HTTPセッションが無効化された場合でも,無効なセッションIDを表すHTTP Cookie情報を削除するためのHTTP Cookieは付加されません。
- 簡易Webサーバでリクエストを受信した。
- サーブレットエンジンモードを使用している。
(2) J2EEサーバに存在しないセッションIDを受信した場合
次の条件をすべて満たす場合,無効なセッションIDを受信したと判断され,無効なセッションIDを表すHTTP Cookie情報を削除するためのHTTP CookieがHTTPレスポンスのヘッダに付加されます。
- セッションIDがHTTP Cookieを使用して通知された。
- 通知されたセッションIDがJ2EEサーバに存在しないセッションIDである。
- HTTPレスポンスのコミット時にHTTPセッションが存在していない。
(3) Webクライアントが保持する無効なセッションIDの削除をする場合の注意事項
複数のJ2EEサーバで同じパスのリクエストを扱う構成の場合,この機能を無効にしてください。
リバースプロキシなどでCookieのPathが書き換えられた同じパスのリクエストを扱うと,HTTPセッションが不当に削除されるおそれがあります。
All Rights Reserved. Copyright (C) 2008, 2011, Hitachi, Ltd.