[Seasar-user:17072] Re: 【Teeda】 ExtensionRedirectUrlResolverImpl の設定について質問です。

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 3月 19日 (木) 01:00:03 JST


小林 (koichik) です.

Date:    Wed, 18 Mar 2009 21:54:21 +0900
From:    西山 はじめ <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17071] 【Teeda】 ExtensionRedirectUrlResolverImpl の設定について質問です。

> しかし、URLをweb.xmlに書くのが運用の問題となるかもしれないと
> いうことで、試行錯誤した結果、
> 
> <context-param>
>     <param-name>teeda.REDIRECT_URL</param-name>
>     <param-value>https:</param-value>
> </context-param>
> 
> とだけ設定してもうまくいっているように見えます。
> 
> ExtensionRedirectUrlResolverImpl を少し見たのですが、動作す
> る理由がいまいち分かりません。(java.net.URLの仕様?)
> 
> この設定で動作するのは仕様なのでしょうか?
> 想定外でたまたま動作しているだけなのでしょうか?

想定外ではあります.
正しく動作するのは (おそらく) たまたまのように
思われます.

RFC 1738 によると,HTTP URL の構文は

http://<host>:<port>/<path>?<searchpart>

となっており,:<port> や <path>,?<searchpart> 等は
省略可能となっていますが,//<host> については
省略可能とは読めません.

しかし,REDIRECT_URL に https: だけ指定した場合
組み立てられる URL は //<host> が省略された

https:/<path>?<searchpart>

となります.
これは好意的に解釈すれば現在のホストをベースとする
URL ですが,そのように解釈しないブラウザがあっても
文句は言えないように思われます.

歴史的には

/  ホストにおける頂点を表す (ルート)
// ネットワークにおける頂点を表す (スーパールート)

であり,// ではなく / で始まるパスは現在のホストに
おけるルートからのパスなので,うまく動くブラウザが
多いのかもしれません.


詳細は分かりませんが,BIG-IP の場合は Teeda 側より
BIG-IP の iRules で対応する方がいいかもしれません.

http://72.14.235.132/search?q=cache:OZ9cP-_hCEYJ:devcentral.f5.com/Default.aspx%3Ftabid%3D145%26aftopicid%3D28626%26afnav%3DNEXT+F5+BIG-IP+HTTP::is_redirect&cd=1&hl=ja&ct=clnk&lr=lang_ja&client=opera



-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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