[#48430] WEBrick — 牛坂 博則 <ushizaka.hironori@...>
|牛坂ともうします。
8 messages
2011/10/03
[#48443] 関数の戻り値について — "Jun'ya Shimoda" <jun-shimo@...>
下田です。
7 messages
2011/10/07
[#48450] 1.8.7と1.9.2の挙動の違いについて — "Jun'ya Shimoda" <jun-shimo@...>
下田です。
13 messages
2011/10/09
[#48451] Re: 1.8.7と1.9.2の挙動の違いについて
— "Jun'ya Shimoda" <jun-shimo@...>
2011/10/09
下田です。
[#48467] net/https のproxy経由接続シーケンスについて — KASUGA Toru (春日 玄) <kasuga.toru@...>
春日と申します。
7 messages
2011/10/14
[#48468] Re: net/https のproxy経由接続シーケンスについて
— 名島太樹 <h.najima@...>
2011/10/14
名島と申します。
[#48475] Re: net/https のproxy経由接続シーケンスについて
— KASUGA Toru (春日 玄) <kasuga.toru@...>
2011/10/16
名島様
[#48480] [ANN]第13回ぐんまRubyの勉強会(guRuby)のご案内 — Yuichi NANSAI <nansai@...>
南齋と申します。
1 message
2011/10/17
[#48484] Windows で $0 へ代入すると刈り取られる — "5.5" <5.5@...>
5.5 です。
10 messages
2011/10/20
[#48485] Re: Windows で $0 へ代入すると刈り取られる
— Nobuyoshi Nakada <nobu@...>
2011/10/21
なかだです。
[#48486] Re: Windows で $0 へ代入すると刈り取られる
— "5.5" <5.5@...>
2011/10/21
5.5 です。
[#48496] IE9/Windows7(64bit)だとformをsubmitできない — 大縄亮 <onawa@...>
はじめまして。株式会社マイレージテクノの大縄と申します。
7 messages
2011/10/25
[ruby-list:48468] Re: net/https のproxy経由接続シーケンスについて
From:
名島太樹 <h.najima@...>
Date:
2011-10-14 08:25:45 UTC
List:
ruby-list #48468
名島と申します。
よくこのメールの目的が分からないのですが、問題の解決が目的ならば、
「Firewallそのものか、Firewallのフィルタ定義がバグってるので、そちらを直してください。」となります。
伝送路(ここではFirewall)が明らかにおかしいことが分かってるだから、そちらを対処すれば万事解決です。
また、net::httpsの該当部分は、極めてまっとうです。
たぶんTCP通信を誤解しているようですが、TCPはストリーム通信なのでパケットの切れ目はプログラム側で意識してはなりませんし、出来ません。
パケットへの分割は、Rubyよりも下のレイヤーでやってます。
Hostの送信も削除してはいけません。削除してしまうとRFC違反になりますし、なによりName Base Virtual
Hostを使ってるサーバと正常に通信できなくなります。
-- 2011-10-14
Hiroki NAJIMA aka Nazy
2011/10/14 11:32 "KASUGA Toru" <kasuga.toru@jp.fujitsu.com>:
>
> 春日と申します。
>
> Windows/MinGW で、
> ruby 1.9.2p290 (2011-07-09) [i386-mingw32]
> を使用しております。
> ----
> require 'net/https'
>
> Net::HTTP.version_1_2
>
> http = Net::HTTP::Proxy("proxy.example.com", 8080).new('www.google.com',
443)
>
> http.use_ssl = true
> http.verify_mode = OpenSSL::SSL::VERIFY_NONE
> http.start {|w|
> response = w.get('/')
> puts response.body
> }
> ----
> と言うようなコードで、proxy 経由のhttps接続を試みますと、うまく接続できない場合があります。
>
> というのも、
> net/http.rb のL.664辺りが、
> ----
> if use_ssl?
> begin
> 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
> ----
> となっており、
> @socket.writeline sprintf('CONNECT %s:%s HTTP/%s',
> @address, @port, HTTPVersion)
> のが実行された結果、
> CONNECT ...
> を含む行が、先行してtcp reassembled pduとして送信されます。
> # その後、Host を含む行が、続きのパケットとして送信されます。
>
> この先行のtcp reassembled
pduパケットが、あるfirewallソフトだと黙って廃棄されてしまい、クライアントとしてはACKを待つので、接続がタイムアウトしてしまいます。
> # このfirewallが、この小さいtcp reassembled pduを黙って廃棄している理由はわかりませんでした。
>
> もちろん、このfirewallソフトを無効化すれば接続シーケンスは無事完了します。
>
> また、
> @socket.writeline "Host: #{@address}:#{@port}"
> をコメントアウトすると、CONNECTを含む行は、tcp reassembled pdu
ではなく、単一のパケットとして送信され、接続シーケンスは無事完了します。
>
> net/http.rb
の実装は、何となく、CONNECTとHostを1つのパケットとして送ることを想定しているように思いますが、私が検証したように、tcp
reassembled pdu で送信されることは想定した動作なのでしょうか?
>
> # もしかして、openssl側の問題かも知れませんが…
>
> -----------------------------------------
> 春日 玄 (KASUGA Toru)
> E-mail : kasuga.toru@jp.fujitsu.com
>
>