エンティティボディのない 302 応答
2003年5月7日(水曜日)
エンティティボディのない 302 応答
"panasonic.co.jp/ideas" という謎の文字列は、"http://panasonic.co.jp/ideas" という URL を連想させます。アクセスしてみると、こうなります。
HTTP/1.1 302 Moved Temporarily
Server: Netscape-Enterprise/4.1
Date: Wed, 07 May 2003 04:22:22 GMT
Location: http://panasonic.co.jp/ideas/
Content-length: 0
Content-type: text/html
Proxy-Connection: close
Connection: close
ちょっとびっくりしました。いや、302 になること自体は予想していたのですが、302 応答にエンティティボディがない (Content-Length: 0 になっている) のでびっくりしたのです。
Apache なり IIS なりの場合、GET に対する 302 応答の時にはエンティティボディが返されます。たとえばこんな感じ。
HTTP/1.1 302 Object Moved Location: http://altba.com/bakera/ Content-Type: text/html Content-Length: 147 <head><title>Document Moved</title></head> <body><h1>Object Moved</h1>This document may be found <a HREF="http://altba.com/bakera/">here</a></body>
思いっきり here症候群なのがみっともない感じですが、Location フィールドの指す URL へのリンクを含む HTML が出力されています。そうしておかないと、ブラウザが自動リダイレクトしなかった場合に二進も三進も行かなくなってしまうからです。RFC2616 でも、このようなエンティティを出力すべきだとされています (SHOULD)。
しかし panasonic.co.jp はそんな HTML を全く返してこないわけで、RFC2616 で SHOULD とされていることを守れていないわけです。これ、サーバの設定の問題なのかと思いましたがそうでもないようで、Netscape-Enterprise のところはことごとく Content-Length: 0 な 302 応答を返してきます。単純に、Netscape-Enterprise ってそういうサーバなのだという話のようですね。
コンテントネゴシエーションの件といい、Netscape-Enterprise って駄目かも……。
- 「エンティティボディのない 302 応答」にコメントを書く
関連する話題: Web / UA / HTTP / Netscape-Enterprise