From: MIYASAKA Masaru Date: 2007-03-12T12:59:13+09:00 Subject: [ruby-dev:30537] Microsoft-IIS 上で cgi.rb がレスポンス行を2重に出力する 初めての投稿です。みやさか と申します。よろしくお願いいたします。 添付ライブラリの cgi.rb についてなのですが、これを Microsoft-IIS 上で使うと、HTTP のレスポンス行が2重に出力されてしまいます↓。 > HTTP/1.1 200 OK > Server: Microsoft-IIS/5.1 > Date: Mon, 12 Mar 2007 03:37:41 GMT > Connection: close > Content-Type: text/html > HTTP/1.1 200 OK > Date: Mon, 12 Mar 2007 03:37:41 GMT > Server: Microsoft-IIS/5.1 > Connection: close > Vary: User-Agent > Last-Modified: Wed, 28 Feb 2007 04:54:36 GMT > Pragma: no-cache > Cache-Control: no-cache 原因は、cgi.rb の 559行目で、SERVER_SOFTWARE が Microsoft-IIS の場合は 無条件にそのスクリプトが nph スクリプトであると判断しているためで、 cgi.rb が出力したレスポンス行と Web サーバが出力したレスポンス行の両方が 含まれてしまっていることなのですが、私が調べた限りでは、IIS/5.0 (Windows2000付属) 以降の IIS ではこういった特別扱いは全く必要ありません。 この ruby-dev の過去ログを見ると、その部分は Perl の CGI.pm を参考にして 書いたようなやりとりがあったのですが、現在のバージョンの CGI.pm を見ると IISを特別扱いしている箇所は "This no longer seems to be necessary" という コメントがつけられてコメントアウトされています。なので、cgi.rb でも この部分はコメントアウトなどをすべきだと思います。 ブラウザなどでは HTTP のレスポンス行が2重に出力されても難なく表示される ようですが、proxy の一部などはこのような HTTP ヘッダを拒否してしまう場合が あるようです。 ---------------------------- 宮坂 賢 (MIYASAKA Masaru) alkaid@coral.ocn.ne.jp