Merge pull request #517 from jormon/no_length_head

HEAD requests on static files should have proper Content-Length
This commit is contained in:
Konstantin Haase 2012-05-23 14:24:45 -07:00
commit f948c236fe
2 changed files with 6 additions and 3 deletions

View File

@ -77,7 +77,9 @@ module Sinatra
headers.delete "Content-Length" headers.delete "Content-Length"
headers.delete "Content-Type" headers.delete "Content-Type"
elsif Array === body and not [204, 304].include?(status.to_i) elsif Array === body and not [204, 304].include?(status.to_i)
headers["Content-Length"] = body.inject(0) { |l, p| l + Rack::Utils.bytesize(p) }.to_s # if some other code has already set Content-Length, don't muck with it
# currently, this would be the static file-handler
headers["Content-Length"] ||= body.inject(0) { |l, p| l + Rack::Utils.bytesize(p) }.to_s
end end
# Rack::Response#finish sometimes returns self as response body. We don't want that. # Rack::Response#finish sometimes returns self as response body. We don't want that.

View File

@ -37,6 +37,7 @@ class StaticTest < Test::Unit::TestCase
assert ok? assert ok?
assert_equal '', body assert_equal '', body
assert response.headers.include?('Last-Modified') assert response.headers.include?('Last-Modified')
assert_equal File.size(__FILE__).to_s, response['Content-Length']
end end
%w[POST PUT DELETE].each do |verb| %w[POST PUT DELETE].each do |verb|