[Seasar-user:15483] Re: S2Struts 1.3.0 リリース

Toshihiro Nakamura [E-MAIL ADDRESS DELETED]
2008年 8月 23日 (土) 16:31:56 JST


中村(taedium)です。

> 原因が何となくわかりましたのでご連絡をさせていただきました。
> こちらの件につきましては、
> 携帯のキャリア(もしくは機種)に問題があるようです。
> ※現状発生しているのは某A社のみです。
> 
> 携帯側で、RequestのKEYにある「=」をURLエンコードせずに反してくるようです。
> 試しにGETやKEYの最後が=のパラメータを送信などもしてみましたが、
> 「=」がURLエンコードされない状況でした。
> 
> KEY値の「=」をエンコード対象としていないのか、
> 末端にある場合しないのかはまだ試しておりませんが、
> もしかすると、=より後はValueとして見ている可能性があります。
> 
> どちらにしろ現状ではクロスキャリア対応の携帯用システムには
> RC6以降のS2Strutsが利用できない状況かと思われます。

この問題は、避けようがないのでしょうか?
たとえば、某A社に問い合わせて回避策がないのか
確認できるなら確認していただければと思います。

回避策がどうしても無いということであれば、
S2Struts側で何からの対策を検討したいと思います。

今のところ思いつくのは
RC5以前と同じ挙動にするオプションを持つか
KEYで「=」が末端とならないように調整するか
の2つです。

> ※RC5の場合も末端が=となりえますが、
> Requestのkey+valueにてActionマッピング?
> をしている為問題となっておりません。
> RC6以降はKEY値のみでマッピングしている為、
> URLデコードする際にエラーとなってしまいます。

はい、ここはRC6から変更しています。
変更理由は、RC5以前ではRequestのkey+valueとActionの
マッピングを「JSPのレンダリング時」に行っていたため、
使い勝手が悪かったからです。
たとえば、アプリケーションサーバの再起動等で
マッピング情報が失われると正常に動作する場合と
同じリクエストを送ってもエラーになるという
問題がありました。
RC6以降は、「JSPのレンダリング時」のマッピングを止め、
リクエストにアクションの式を直接含めるようにしています。

これは特にS2StrutsのLinkタグの場合に、
URLをブックマークしてもアクセスできないという現象として
問題になっていました。

あとRC5以前の方法だとサーバが複数ある場合も
うまくいかないことがありそうです。

> ※補足[RequestDumpFilterの罠]
> [param]czJzdHJ1dHMuQkFTRTY0X0ZPUk1BVDpzMnN0cnV0cy5BQ1RJT05fRVhQUkVTU0lPTj0lMjMlN0Jsb2dpbklucXVpcnlBY3Rpb24ubG9naW4lN0Q==ログイン
> 実は・・・
> 
> PCアクセス時
> KEY   :czJzdHJ1dHMuQkFTRTY0X0ZPUk1BVDpzMnN0cnV0cy5BQ1RJT05fRVhQUkVTU0lPTj0lMjMlN0Jsb2dpbklucXVpcnlBY3Rpb24ubG9naW4lN0Q=
> VALUE :ログイン
> 
> 携帯アクセス時
> KEY   :czJzdHJ1dHMuQkFTRTY0X0ZPUk1BVDpzMnN0cnV0cy5BQ1RJT05fRVhQUkVTU0lPTj0lMjMlN0Jsb2dpbklucXVpcnlBY3Rpb24ubG9naW4lN0Q
> VALUE :=ログイン

これは盲点でした。。。
ダンプの時点ですでにKEYとVALUEの値がおかしかったんですね。

-- 
Toshihiro Nakamura



Seasar-user メーリングリストの案内