2002年2月8日(金曜日)
Netscape-Enterprize/4.0 でコンテントネゴちゃんが死亡
Netscape-Enterprise/4.0 な Web サーバにおいて、Accept-Language でコンテント・ネゴシエーションを行っているようなリソースがとにかく 404 Not Found になります。私以外の人には見られたりするようなので、私の日ごろの行いが悪いのかと思ってイロイロ調べてみたら、原因がわかりました。
私の IE6 の要求ヘッダには、Accept-Language: ja,en;q=0.8,de;q=0.5,*;q=0.3 が含まれています。要するに第一希望日本語、第二希望英語、第三希望ドイツ語です。それらが無い場合は、406 Not Acceptable を返されるよりは、読めない言語でも構わないので何かリソースを返して貰った方が良いので、* を入れています。
で、これが Netscape-Enterprise/4.0 では駄目なようです。Accept-Language: *;q=1 でも 404 になります。Accept-Language: * で要求すると 200 OK なのですが、* の後ろに qvalue がつくと問答無用で 404 Not Found になるようです。
いやーすばらしい。406 ならまだしも、404 になる辺りがなんともバグっぽいと言うか、きっぱりバグです。
ちなみに RFC2616 では、
Accept-Language = "Accept-Language" ":"
1#( language-range [ ";" "q" "=" qvalue ] )
language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) | "*" )
以上、urn:ietf:rfc:2616 より
qvalue = ( "0" [ "." 0*3DIGIT ] )
| ( "1" [ "." 0*3("0") ] )
以上、urn:ietf:rfc:2616 より
です。"*;q=1" は正当です。
って、今まで誰も気づかなかったのでしょうか。Accept-Language に * を含めているのって、ひょっとして私だけ?
ちなみに、Accept-Language でネゴシエーションしないリソースは問題なく拾えます。なので、フレームの外枠だけは拾えるなどという謎な状態になったりします。
もちろん、Apache ではこんな変なことにはなりません。ASAHIネットやもののけサーバに置いてある鳩丸はだいたいあんしんです。
- 「Netscape-Enterprize/4.0 でコンテントネゴちゃんが死亡」にコメントを書く
関連する話題: Web / httpd / HTTP / Netscape / Netscape-Enterprise / RFC
- 前(古い): 2002年2月3日(Sunday)のえび日記
- 次(新しい): 2002年2月11日(Monday)のえび日記