Index: [Article Count Order] [Thread]

Date: Mon, 26 Jan 2004 17:04:47 +0900 (JST)
From: GOTOU Yuuzou <gotoyuzo@notwork.org>
Subject: [webrickja:100] Re: WEBrickとNorton Internet Security
To: webrickja@notwork.org
Message-Id: <20040126.170447.607972723.gotoyuzo@sawara.does.notwork.org>
In-Reply-To: <20040126035900.E867.SAGAWA@sohgoh.net>
References: <20040126035900.E867.SAGAWA@sohgoh.net>
X-Mail-Count: 00100

In message <20040126035900.E867.SAGAWA@sohgoh.net>,
 `Akihiro Sagawa <sagawa@sohgoh.net>' wrote:
> WEBrickのサイト(..をはじめとするWEBrick利用サイト)を
> Norton Internet Security 2003(以下NIS2003)を経由して閲覧した場合、
> Bad Requestと言われ閲覧ができないので、
> 修正をお願いしたくメール致します。
> 
> これはNIS2003がリクエストヘッダ中のAccept-Encodingを
> `~~~~~~~~~~~~~~~'に変換したものを
> WEBrick側でヘッダと見なさないのが原因のようです。
> # NIS2003はトランスペアレントプロキシとして動作して、
> # クライアントの送出するAccept-Encodingを改変するようです。

一瞬、文字化けしてるのかと思ってしまいましたが、
「Accept-Encoding: compress」が「~~~~~~~~~~~~~~~: compress」
に変換されてしまうということですか。しかし、それはさておき、

> そこで以下のような修正をし、~に変換されたヘッダを無視するよう、
> 修正をお願いできないでしょうか。

RFC2616によると、ヘッダフィールド名は

       message-header = field-name ":" [ field-value ]
       field-name     = token

となっていて、tokenは

       token          = 1*<any CHAR except CTLs or separators>
       separators     = "(" | ")" | "<" | ">" | "@"
                      | "," | ";" | ":" | "\" | <">
                      | "/" | "[" | "]" | "?" | "="
                      | "{" | "}" | SP | HT

とのことですから、"~" も含めて

diff -u -p -1 -r1.3 httputils.rb
--- lib/webrick/httputils.rb    18 Dec 2003 19:08:11 -0000      1.3
+++ lib/webrick/httputils.rb    26 Jan 2004 07:58:56 -0000
@@ -131,3 +131,3 @@ module WEBrick
         case line
-        when /^([A-Za-z0-9_\-]+):\s*(.*?)\s*\z/om
+        when /^([A-Za-z0-9!\#$%&'*+\-.^_`|~]+):\s*(.*?)\s*\z/om
           field, value = $1, $2

くらいは必要だったようです。

> P.S.
> webrick.orgの1.3.1リリース日時が1年ずれているようです。

最後にリリースした1.3.1ではWEBrick::RELEASE_DATEは外してしまっ
たと思うのですが、いつのバージョンをお使いでしょう?

Ruby-1.8以降、WEBrickが標準添付ライブラリとして含まれるよう
になってから、notwork.orgにあるソースには基本的に手を入れて
いませんので、可能なら乗り換えていただいた方がよいかと思います。

-- 
ごとうゆうぞう