[#39464] Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

25 messages 2004/04/01
[#39608] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

遅い反応&File.fnmatchは使った事ない&ruby-devの方では

[#39609] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

File.fnmatch(と Dir.glob)をちょっと使ってみたのですが、

[#39610] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/05/02

山本です。

[#39611] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39613] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/02

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39616] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/02

まつもと ゆきひろです

[#39620] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[#39621] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — matz@... (Yukihiro Matsumoto) 2004/05/03

まつもと ゆきひろです

[#39622] Re: Re [ruby-dev:23297] 大文字・小文字の区別がDOSISHかどうかで変わる、パス名マッチ関数の提案 — pegacorn@... 2004/05/03

From: matz@ruby-lang.org (Yukihiro Matsumoto)

[ruby-list:39543] Re: open-uri takes wrong value for Host with proxy

From: Tanaka Akira <akr@...17n.org>
Date: 2004-04-12 15:41:12 UTC
List: ruby-list #39543
In article <m3d66dcltd.wl@ats7@a.email.ne.jp>,
  Atsushi SHICHI <ats7@a.email.ne.jp> writes:

> [ruby-list:25882]のスレッドで、proxy を使う場合、Net::HTTP が
> Host ヘッダフィールドに proxy のアドレスとポートから作られた
> 文字列を入れてしまうバグが報告され、青木さんが修正して下さった
> と思いますが、open-uri にも同様のバグがあるようです。

うぅむ。Host: には origin server を指定しないといけなかったんですね。
気づいてませんでした。
(つまり、name based virtual proxy というのはできないわけだ。)

これを open-uri 側で Host: を生成するようにするなら次のようになります。
(そうか。こーゆーときに Host: を変える機能が必要になるのか?)

Index: lib/open-uri.rb
===================================================================
RCS file: /src/ruby/lib/open-uri.rb,v
retrieving revision 1.25
diff -u -r1.25 open-uri.rb
--- lib/open-uri.rb	12 Apr 2004 10:17:46 -0000	1.25
+++ lib/open-uri.rb	12 Apr 2004 15:01:58 -0000
@@ -529,6 +529,8 @@
       header = {}
       options.each {|k, v| header[k] = v if String === k }
 
+      header['host'] = uri.host
+
       require 'net/http'
       resp = nil
       Net::HTTP.start(self.host, self.port) {|http|
Index: lib/net/http.rb
===================================================================
RCS file: /src/ruby/lib/net/http.rb,v
retrieving revision 1.115
diff -u -r1.115 http.rb
--- lib/net/http.rb	29 Mar 2004 07:54:37 -0000	1.115
+++ lib/net/http.rb	12 Apr 2004 15:02:00 -0000
@@ -949,7 +949,7 @@
       if not req.response_body_permitted? and @close_on_empty_response
         req['connection'] = 'close'
       end
-      req['host'] = addr_port()
+      req['host'] ||= addr_port()
     end
 
     def end_transport(req, res)

ほかの案としては、net/http 側で Request-URI に absoluteURI がきたらそ
こから Host: を生成するという可能性もあります。ただ、net/http はもとも
と proxy を別の形でサポートしていて、open-uri はそうではない方法でむり
やり proxy を扱うので、そういうのは net/http にはそぐわないという気も
します。

なお、open-uri が素直でない方法で net/http を使うのは、素直な方法だと
http proxy 経由の ftp を扱えないためです。

ついでにいえば http proxy 経由の http の場合には net/http の proxy を
素直に使うというのもあり得ます。が、そうした場合には http proxy 経由の
ftp の場合に Host: が proxy になってしまいます。まぁ、ftp には name
based virtual host はないのでそれはそれで構わないという気もしますが...

さて、どうしましょうね。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread