Index: [Article Count Order] [Thread]

Date:  Sat, 09 Mar 2002 19:07:49 +0900 (JST)
From:  GOTOU Yuuzou <gotoyuzo@notwork.org>
Subject:  [webrickja:11] Re: server name
To:  webrickja@notwork.org
Message-Id:  <20020309.190749.63229110.gotoyuzo@kotetsu.does.notwork.org>
In-Reply-To:  <m31yeu40dg.wl@edwin.mva.biglobe.ne.jp>
References:  <m31yeu40dg.wl@edwin.mva.biglobe.ne.jp>
X-Mail-Count: 00011

In message <m31yeu40dg.wl@edwin.mva.biglobe.ne.jp>,
 `m_seki@mva.biglobe.ne.jp' wrote:
> 
> 
> 咳です。
> 
> たまにはMLで質問しよう。
> 
> サーブレットをいくつか書いています。do_GETの中で自分のURLを
> 作るには、どうしたらよいでしょう。
> 
>  http://hostname/mount/hoge
>                 =========== ここは script_name と path_info でできると
>                             おしえてもらいました。
>  =============== こっちはどんなAPIでもらえるでしょうか?

いまのところは専用のAPIは持ってないので、

  scheme = req.config[:SSLEnable] ? "https" : "http"
  if req['host']
    host, port = req['host'].split(":", 2)
    port ||= (scheme == "https") ? "443" : "80"
  else
    host = req.config[:ServerName]
    port = req.config[:Port]
  end
  uri = "#{scheme}://#{host}:#{port}"
 
という感じでしょうか。

でも、これではあんまりなので、HTTPRequest#absolute_uri
で Request-URI の絶対 URI を返すようにしようかと思います。

それと、リダイレクトする場合にも絶対 URI が必要なんです
が、これは HTTPResponse が送信時に Location: ヘッダを
チェックすればいいような気がするので、
HTTPResponse#set_redirect にはパスを与えれば済むようにし
ます。

CGI でスキームを得るポータブルな方法って知らないのですが、
mod_ssl がセットしてくれるメタ変数 HTTPS を WEBrick でも
提供してればいいんですかねえ。

--
ごとうゆうぞう