In message <87vf8zh241.fsf / serein.a02.aist.go.jp>, `Tanaka Akira <akr / m17n.org>' wrote: > 試してないので間違ってたらすみませんが、net/http, net/https は https > proxy で認証を行えない感じがします。 (snip) > また、その場合 (proxy がなぜか使えてしまった場合) Proxy-Authorization: > は origin server に送られてしまうように思えます。もしそれがそうである > ならば、可能性としてはパスワードを意図せざるサーバに送ってしまうわけで、 > あまりよろしくないんじゃないでしょうか。まぁ、その場合はそのパスワード > には意味がないようにも思えますが。 たしかに。 というわけでこんな感じでどうでしょう?>青木さん CONNECT後に、Request-URIとしてhttpsスキームのURIを送るとエラー になるケースに遭遇したので、ProxyDelta#edit_pathも修正してい ます。 -- ごとうゆうぞう --- lib/net/http.rb 1 Jan 2005 08:59:47 -0000 1.123 +++ lib/net/http.rb 12 Feb 2005 16:33:47 -0000 @@ -462,6 +462,12 @@ def connect if proxy? @socket.writeline sprintf('CONNECT %s:%s HTTP/%s', @address, @port, HTTPVersion) + @socket.writeline "Host: #{@address}:#{@port}" + if proxy_user + credential = ["#{proxy_user}:#{proxy_pass}"].pack('m') + credential.delete!("\r\n") + @socket.writeline "Proxy-Authorization: Basic #{credential}" + end @socket.writeline '' HTTPResponse.read_new(@socket).value end @@ -601,11 +607,7 @@ def conn_port end def edit_path(path) - if use_ssl? - "https://#{addr_port()}#{path}" - else - "http://#{addr_port()}#{path}" - end + use_ssl? ? path : "http://#{addr_port()}#{path}" end end @@ -924,7 +926,9 @@ def request(req, body = nil, &block) } end if proxy_user() - req.proxy_basic_auth proxy_user(), proxy_pass() + unless use_ssl? + req.proxy_basic_auth proxy_user(), proxy_pass() + end end req.set_body_internal body