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にあるソースには基本的に手を入れて
いませんので、可能なら乗り換えていただいた方がよいかと思います。
--
ごとうゆうぞう