tokuhirom's Blog

HTTP/1.1 における Keep-Alive と HEAD の関係性について

HTTP/1.1 においては、HEAD リクエストの場合には Message Body を送信してはならないということにはなっているのですが、現実的には、Message Body をおくりかえしてくるアホなサーバーがおおい。たとえば Plack では Plack::Middleware::Head を明示的に使用していない場合、普通にやると HEAD でも message body をかえしてしまうだろう。

というわけで、HEAD で Message Body をかえしてくれるサーバーがおおいのだが、Message Body をかえされてしまうと、Keep-Alive しているときにこまる。次のリクエストとまじる。

この問題にたいするよい解決策はないので、HEAD リクエストを送信した後には connection を close してしまうのが、現実的な解決策だとおもった。

現実的には、現代のアプリケーションにおいては HEAD を発行するメリットはなく、If-Modified-Since を利用するなどして GET リクエストをなげればいいので、別にこれでよいという結論。

なのですが、なにかもっといい解決策がある人はいますか?