RFC 2616 はないがしろ

なんてことには今更誰も驚かないとは思うけれど。

自分にお見舞いされるとやっぱーり、うわぁ、と思う。一つ前の投稿を真面目に突き詰めるほどこれ、ありゃりゃぁ、と。14.3 Accept-Encodingで書かれてること、全然守られてないことがわかった。

検証には wget を使うことが出来る。例えば:

1 me@host: ~$ wget -d -S --header="Accept-Encoding: identity;q=0,*;q=0" http://somebody/to/night.html

1.1仕様的には品質係数(q= で指定してるもの)を0にすれば、「使うな」ということになるし、ありえない content-coding を指定してみることも出来る。ので、14.3 Accept-Encodingに書かれているこの部分:

If an Accept-Encoding field is present in a request, and if the server cannot send a response which is acceptable according to the Accept-Encoding header, then the server SHOULD send an error response with the 406 (Not Acceptable) status code.

を検証出来るだろうと思ったわけだ。

色んなサイトでやってみたが、どのサイトも是が非でも 200 OKContent-Encoding: identity で返してくる。「SHOULD」だから違反ではないんだけれども…。「Accept-Encoding: hoge」でもオッケーなんですもの…。

あと、deflate をサポートしてるサーバって、多くないみたいね。

誰か(ワタシを含め)が書いたちょっとした CGI とかがヘンな応答なのはわかるんだけど、Apache, nginx, IIS でホストされていて、おそらくそれらの「モジュール任せ(mod_deflateとか)」と思われるものたちの応答がこうなのね。(「反応しようとしてる」ことは「gzip」を入れると gzip では返してくることからわかる。)

なんか真面目に考えるの馬鹿らしくなってくる。。。