[cubby-user:135] Re: URLの半角スペースの扱い

BABA,Yasuyuki [E-MAIL ADDRESS DELETED]
2009年 4月 13日 (月) 20:32:28 JST


馬場です。

詳しく確認して見たところ、URL ボディ部分の半角スペースを「+」にエンコー
ドしているのが原因でした。

Cubby は HttpServletRequest#getServletPath() からパスを取得しています。
これはデコードされた文字列を返すのですが、送信される URL に + が含まれて
いてもこの記号はデコードされません。
PathResolverImpl でボディ部分をエンコード・デコードしている部分を修正し、
・エンコード時には半角スペースを %20 としてエンコードする
・デコードは行わないでサーブレットコンテナに任せる
という対応にしようと思います。

> link タグには encodeURL という属性があり、これを false にすることで
> URL をエンコードしないように設定できます。
すみません、これは勘違いでした。
これは HttpResponse#encodeURL を呼び出すかどうかのフラグでした。

BABA,Yasuyuki さんは書きました:
> 馬場です。
> 
> 確認してみたところ、バージョン 1.1.0 から 1.1.1 の時にデグレしてしまった
> ようです。
> 次回リリースまでに修正します。
> 
> デコードするためのロジックは入っているのですが、RouterImpl#routing() でp
> PathResolver#getInternalForwardInfo() のエンコーディングに null を渡して
> しまっているのでデコードされていません。
> 
>>>> これは半角スペースを + にエンコードしないか、
>>>> + を正しく半角スペースにデコードするようにはなりませんでしょうか。
> link タグには encodeURL という属性があり、これを false にすることで URL
> をエンコードしないように設定できます。
> 
>> 山元です。返事が大変遅くなってしまい申し訳ないです。
>> 先日無事Cubbyを使用して構築したアプリケーションを
>> サービスインさせることができました。
>> ありがとうございます。
> こちらこそ、ありがとうございます。
> こういう話はすごくうれしいです。
> 
> Hiroshi Yamamoto さんは書きました:
>> 馬場さん
>>
>> 山元です。返事が大変遅くなってしまい申し訳ないです。
>> 先日無事Cubbyを使用して構築したアプリケーションを
>> サービスインさせることができました。
>> ありがとうございます。
>>
>>>> Action側では + を半角スペースにデコードしてくれないようです。
>>> とは、どの部分のことでしょう?
>> 今回はMayaaを併用させていただいています。
>>
>> hoge.mayaa
>> <t:link m:id="hoge_anchor" actionClass="hoge.action.HogeAction"
>> actionMethod="index" tag="a" attr="href">
>>     <t:param name="name" value="${name}" />
>>     <m:doBody />
>> </t:link>
>>
>> HogeAction
>> public class HogeAction extends ...
>> @@RequestParameter
>> public String name;
>> @Path("{name,[^/]+}")
>> public ActionResult index() {
>>
>> 上記でnameの値が半角スペースを含む場合、
>> URLは半角スペースが「+」にエンコードされたURLが出力されます。
>>
>> しかしそのURLにアクセスすることで呼ばれるHogeActionに
>> 設定されたnameには、「+」は「+」のまま設定されるため現状では
>> 無理やり「+」を半角スペースに置換することで対応しています。
>>
>> Cubbyのバージョンは1.1.4
>> Mayaaのバージョンは1.1.22
>>
>> を使用しています。
>> 以上、よろしくお願いします。
>>
>>
>> 2009/03/31 19:17 BABA,Yasuyuki <[E-MAIL ADDRESS DELETED]>:
>>> 馬場です。
>>>
>>>> Action側では + を半角スペースにデコードしてくれないようです。
>>> とは、どの部分のことでしょう?
>>>
>>> さしつかえなければ、どのようなことがしたいのかと、生成されたURLやアク
>>> ションクラスのコードの具体例をあげてもらえませんか。
>>>
>>>
>>> Hiroshi Yamamoto さんは書きました:
>>>> お世話になっております。
>>>> 山元と申します。
>>>>
>>>> Cubbyで半角スペースを含むURLの扱いについてです。
>>>>
>>>> t:linkタグで半角スペースを含むURLを生成した場合、
>>>> 半角スペースは + にエンコードされるようですが、
>>>> Action側では + を半角スペースにデコードしてくれないようです。
>>>> (t:formタグは未確認です)
>>>>
>>>> これは半角スペースを + にエンコードしないか、
>>>> + を正しく半角スペースにデコードするようにはなりませんでしょうか。
>>>>
>>>> 以上、よろしくお願いいたします。
>>>> _______________________________________________
>>>> cubby-user mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/cubby-user
>>> --
>>> BABA,Yasuyuki
>>> [E-MAIL ADDRESS DELETED]
>>> _______________________________________________
>>> cubby-user mailing list
>>> [E-MAIL ADDRESS DELETED]
>>> https://ml.seasar.org/mailman/listinfo/cubby-user
>>>
>> _______________________________________________
>> cubby-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/cubby-user
> 
> 


-- 
BABA,Yasuyuki
[E-MAIL ADDRESS DELETED]


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