[Wicket-ja-user 192] Re: Redirect時のSessionについて

Back to archive index

Hiromichi Kishi h.kis****@gmail*****
2008年 7月 27日 (日) 16:43:20 JST


岸です。

jsessionidの問題は私も困っていたので参考になりました。

ところで、
session.getClientInfo();
を実行すると、

"If you see this, it means that both javascript and meta-refresh are not
  support by your browser configuration. Please click this link to continue to
  the original destination"

というページが一瞬表示されるのですが、これを表示しない、あるいは文章を変更する方法はあるのでしょうか?

2008/07/25 10:13 古川 烈 <r_f_315****@hotma*****>:
> 古川です。
>
> 早速試してみました。
>
> WebApplication内のinitで
> {
>         /* リクエストサイクルセッティングを取得する */
>         IRequestCycleSettings iRequestCycleSettings =
> this.getRequestCycleSettings();
>
>         /* 拡張ブラウザ情報取得モードに設定 */
>         iRequestCycleSettings.setGatherExtendedBrowserInfo( true );
> }
>
> として
>
> WebPage内のコンストラクタで
> {
>         /* セッション情報を取得する */
>         MySession session = (MySession) this.getSession();
>
>         /* セッションをバインドする */
>         session.bind();
>
>         /* セッションからクライアント情報を取得する(jsessionidの問題のため必ず一回呼び出す) */
>         @SuppressWarnings( "unused" )
>         ClientInfo info = session.getClientInfo();
>
>         this.add( new BookmarkablePageLink( "pageA", ChildA.class ) );
> }
>
> のようにすれば期待の動作が実現できました。
>
> ブラウザのCookieの有効無効にかかわらず、
> セッションが無い状態の初回アクセス時に現在のページにリダイレクトされて
> jsessionidをURLに付与するか?、付与しないか?が解決される期待通りの動作です。
> また、セッションが存在する状態では初回アクセス以降の遷移先ページでは、
> Cookieがの有効無効に関わらずクライアント情報取得のために何度もリダイレクトが発生するというなこともありませんでした。
>
> もっと他に良い方法があるのかもしれませんが、現状目標としていた
>
>     NiceURL+セッションの維持+Cookie有効無効によってURLにjsessionid付与
>
> が、実現できたので自分の中で良しとしておきます。
>
> Wicketメーリングリスト、最高ですね;-)
>
>> Date: Thu, 24 Jul 2008 19:05:15 +0900
>> From: benbr****@mac*****
>> To: wicke****@lists*****
>> Subject: [Wicket-ja-user 166] Re: Redirect時のSessionについて
>>
>> 矢野です。
>>
>> > 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
>>
>> _______________________________________________
>> Wicket-ja-user mailing list
>> Wicke****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>
> ________________________________
> MSN相談党、誕生。あなたの知識で日本を変えよう。党首には押切もえが就任! Hotmailで質問・回答できる!今すぐ参加!
> _______________________________________________
> Wicket-ja-user mailing list
> Wicke****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/wicket-ja-user
>
>




Wicket-ja-user メーリングリストの案内
Back to archive index