On Jun 13, 2013, at 3:28 PM, Jonathan Rudenberg <[email protected]> wrote:
> > On Jun 13, 2013, at 3:21 PM, Eric Wong <[email protected]> wrote: > >> Jonathan Rudenberg <[email protected]> wrote: >>> On Jun 13, 2013, at 2:22 PM, Eric Wong <[email protected]> wrote: >>>> Jonathan Rudenberg <[email protected]> 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) >>> >>> This does not change the result, as the Rack::Head implementation looks >>> like this: >>> >>> def call(env) >>> status, headers, body = @app.call(env) >>> >>> if env["REQUEST_METHOD"] == "HEAD" >>> body.close if body.respond_to? :close >>> [status, headers, []] >>> else >>> [status, headers, body] >>> end >>> end >> >> OK, I think you were hitting another problem because you were lacking >> Rack::ContentType >> >> Try the following: >> -----------------------8<--------------------- >> require 'rack' >> use Rack::ContentLength # less ambiguous than Rack::Chunked adding '0' >> use Rack::Head >> use Rack::ContentType >> run lambda { |env| [200, {}, []] } >> -----------------------8<--------------------- > > Thanks, this stack works. > >> I added the Rack::ContentLength (it's already in the default middleware >> stack) since I believe Rack::Chunked adding the '0' is a violation of >> rfc2616... I'll need to read more closely to be sure. > > Hmm, so this is a bug in Rack::Chunked? My reading of the spec says that the > '0' is incorrect. Actually, the solution is that Rack::Head needs to come before Rack::Chunked. Perhaps Rack's default development stack should include this? _______________________________________________ Unicorn mailing list - [email protected] http://rubyforge.org/mailman/listinfo/mongrel-unicorn Do not quote signatures (like this one) or top post when replying
