"矢野 勉"
benbr****@mac*****
2008年 7月 24日 (木) 19:05:15 JST
矢野です。 > 1.cookieを使用可能にしているブラウザでアクセスした場合、 > 初回のみURLにjsessionidが付与され、次ページ以降の遷移に関してはURLは綺麗なままでした。 > > 2.cookieを使用不可にしているブラウザでアクセスした場合は、 > 初回以降も遷移する度に同じjsessionidがURLの後ろに自動で割り振られました。 なるほど、見えてきました。初回アクセス時のみjessionidが付与されるのですね。 これはWicketというよりもHttpServletResponse#encodeUrl()の問題なんです。 実はStrutsの時代でも<html:link>タグが初回アクセス時だけリンクにjsessionidを付与すると いうことで知られていました。 参考: http://d.hatena.ne.jp/hyperash/200310 つまりサーブレット仕様としてjsessionidクッキーが送られてこない場合はCookieによるセッション維持が できるかどうかわからないので、URLを生成するときにはjsessionidを付与しよう、という仕組みになってる ようですね。 解決方法としてはリンク先のようにjsessionidを付与してもいいですが、私はむしろ、Cookieが来てなければ 一度リダイレクトさせてCookieを発行してやったほうがいいんじゃないかと思います。 ブラウザのCookieが有効かどうかはSession#getClientInfo()でわかります。 (IRequestCycleSettings#setGatherExtendedBrowserInfo(true)を呼んでいることが前提ですが)。 ただ、getClientInfo()メソッド自体がクライアント情報取得のためにいったんリダイレクトをするはずですので、 結局そのタイミングでクッキーが発行されると思いますし、結局getClientInfo()だけで解決してしまうかもしれませんが。 --------------------- 矢野 勉(やの つとむ) benbr****@mac***** 木曜日、7月24、2008、05:35PM、 "古川 烈" <r_f_315****@hotma*****>のメッセージ: > >古川です。 > >分り易いページへの誘導ありがとうございます。 >なるほど、納得しました。 > >さらに調査した結果を報告します。 > >dirty()で綺麗なURLになると書きましたが、間違いでした。 >誤情報を流して申し訳ありませんでした。 >dirty()を記述しようがしまいが、初回のリクエスト時だけはjsessionidがURLの後ろに付けられます。 >※結局のところdirty()が何を行うメソッドなのか不明です。 > >動きとしては、bind()を呼ぶだけでセッションが維持され、 > >1.cookieを使用可能にしているブラウザでアクセスした場合、 > 初回のみURLにjsessionidが付与され、次ページ以降の遷移に関してはURLは綺麗なままでした。 > >2.cookieを使用不可にしているブラウザでアクセスした場合は、 > 初回以降も遷移する度に同じjsessionidがURLの後ろに自動で割り振られました。 > > >なんというか、とても歯がゆい状態です。。。 > >理想の動作としては、 > >・初回もURLを汚してほしくない >・Cookieが使用できないブラウザでアクセスされた場合は常にURLにjsessionidを付与する > >という動作が望ましいのですが。。。 > >ためしにBookmarkablePageLinkの protected CharSequence getURL() の中身を >{ > String url = new StringBuffer( super.getURL() ).toString(); > > return url.replaceAll(";jsessionid=.*(\\?|$)", ""); >} >こんな感じでオーバーライドしてみたら、初回からもURLは汚されませんでしたが、 >当然cookieが無効になっているブラウザでURLにjsessionidが付かないので問題有りでした。 >但し、cookieが有効なブラウザで初回のURLが綺麗でも問題なくセッションは維持されていました。 > >BookmarkablePageLinkの中身を見て上記の動作が実現できるようにもう少し研究してみます。 > > >--------------------------------------------------- >古川 烈(ふるかわ れつ) >電子メール:r_f_315****@hotma***** >--------------------------------------------------- > >_________________________________________________________________ >MSN相談党、誕生。あなたの知識で日本を変えよう。党首には押切もえが就任! >http://questionbox.jp.msn.com/index.php3?StatusCheck=ON