提交 07441488 编写于 作者: J Jeremy Kemper

Remove Content-Length header from :no_content responses

上级 48963a55
......@@ -231,10 +231,13 @@ def convert_content_type!
# Don't set the Content-Length for block-based bodies as that would mean
# reading it all into memory. Not nice for, say, a 2GB streaming file.
def set_content_length!
unless body.respond_to?(:call) || (status && status.to_s[0..2] == '304')
self.headers["Content-Length"] ||= body.size
if status && status.to_s[0..2] == '204'
headers.delete('Content-Length')
elsif length = headers['Content-Length']
headers['Content-Length'] = length.to_s
elsif !body.respond_to?(:call) && (!status || status.to_s[0..2] != '304')
headers["Content-Length"] = body.size.to_s
end
headers["Content-Length"] = headers["Content-Length"].to_s if headers["Content-Length"]
end
def convert_language!
......
......@@ -1218,6 +1218,11 @@ def test_head_with_symbolic_status
assert_equal "404 Not Found", @response.status
assert_response :not_found
get :head_with_symbolic_status, :status => "no_content"
assert_equal "204 No Content", @response.status
assert !@response.headers.include?('Content-Length')
assert_response :no_content
ActionController::StatusCodes::SYMBOL_TO_STATUS_CODE.each do |status, code|
get :head_with_symbolic_status, :status => status.to_s
assert_equal code, @response.response_code
......@@ -1470,7 +1475,7 @@ def test_render_against_etag_request_should_304_when_match
def test_render_against_etag_request_should_have_no_content_length_when_match
@request.if_none_match = etag_for("hello david")
get :render_hello_world_from_variable
assert !@response.headers.has_key?("Content-Length")
assert !@response.headers.has_key?("Content-Length"), @response.headers['Content-Length']
end
def test_render_against_etag_request_should_200_when_no_match
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册