HEAD responses contain body

Eric Wong normalperson at yhbt.net
Thu Jun 13 18:22:39 UTC 2013

Jonathan Rudenberg <jonathan at titanous.com> wrote:
> RFC 2616 section 9.4[1] states:
> > The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.
> A HEAD request against this simple Rack app running on unicorn-4.6.2:
>     require 'rack'

+     use Rack::Head

>     run lambda { |env| [200, {}, []] }

The Rack::Head middleware should be used to correctly strip HEAD
responses of their bodies (frameworks such as Rails/Sinatra should
already add Rack::Head to the middleware stack for you)

> Looks like this on the wire:
>     HEAD / HTTP/1.1
>     User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8x zlib/1.2.5
>     Host: localhost:8080
>     Accept: */*
>     HTTP/1.1 200 OK
>     Date: Thu, 13 Jun 2013 16:04:55 GMT
>     Status: 200 OK
>     Connection: close
>     Transfer-Encoding: chunked
>     0
>     HTTP/1.1 500 Internal Server Error

> As you can see, not only is there a zero-length chunked encoding body,
> but for some unknown reason there is a 500 response with no body as
> well.

Try using "-d" on the command-line to enable debugging to see what the
error is (and check the logs/stderr output).

Also, what RACK_ENV (or -E/--env) are you using?  It could be the
incorrect HEAD response tripping Rack::Lint under development mode.

> Please cc any responses directly to me, as I do not subscribe to this list.

Done :>

More information about the mongrel-unicorn mailing list