- PR -

TOMCATのセッション設定

1
投稿者投稿内容
パンダ
ベテラン
会議室デビュー日: 2004/03/24
投稿数: 59
投稿日時: 2006-02-02 17:21
いつもお世話になっています。
TOMCATのセッション設定について教えて頂けないでしょうか?

TOMCAT+STRUTS+IE6で開発テストしています。
コンテキストプロパティのクッキーを設定をTrueにして、
IEのクッキーを許可しない状態でもセッションが問題なく
使用できてしまいます。Falseに設定するとURL riwritingに
なるのは確認できています(URLに表示されます)。
サーバとIEのテストマシンも別々で行っています。

(質問1)
なぜ、コンテキストプロパティのクッキーを設定をTrueにして、
IEのクッキーを「すべてのクッキーをブロック」にしているのに
セッションが問題なく使えるのでしょか?

(質問2)
また、コンテキストプロパティのクッキーを設定をTrueにして、
IEのクッキーを使用可能な状態にしても、一発目は必ず、URLに
gsessionidが表示されます。なぜでしょうか?
消す方法はあるのでしょうか?

よろしくお願いします。
 
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-02-02 17:37
1)クッキーをブロックしてもセッションが使える理由
URL rewriting ベースでセッションを維持しているからです。
クライアントが毎回クッキーを送る変わりに、リンクに含まれる ;JSESSIONID=??? という部分でどのセッションにひもつくリクエストであるかを判断しています。

2)URLにセッションIDが含まれる理由
URLを算出する箇所で response.encodeURL(url)などとしているはずです。
初回アクセス時はブラウザがセッションIDのクッキーを送ってきません。まだセッションが作成されていませんので。
サーブレットコンテナとしてはクッキーを送ってこないブラウザが今後クッキーを受け入れてくれるかどうか知る由がないのでひとまずクッキーを送りつつ URL 書き換えも行うわけです。
2度目以降のアクセスではクッキーが送られてくるので、じゃぁ URL 書き換えは必要ないなと判断するわけですね。興味があれば Tomcat の encodeURL の実装部分を見てください。
で、必ずURL書き換えを行わせたくないのであればそういう設定があるかと思います。
たぶんデフォルトで on になっているのではないでしょうか。
まぁ encodeURL をしない、という消極的な対応方法もありますがあまりお勧めしません。
1

スキルアップ/キャリアアップ(JOB@IT)