mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #8662 from senny/8661_should_not_append_charset_if_already_present
Charset should not be appended to image/* type
This commit is contained in:
commit
5e5107430b
4 changed files with 25 additions and 3 deletions
|
@ -1,5 +1,11 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Do not append `charset=` parameter when `head` is called with a
|
||||
`:content_type` option.
|
||||
Fix #8661.
|
||||
|
||||
*Yves Senn*
|
||||
|
||||
* Added `Mime::NullType` class. This allows to use html?, xml?, json?..etc when
|
||||
the `format` of `request` is unknown, without raise an exception.
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@ module ActionController
|
|||
|
||||
if include_content?(self.status)
|
||||
self.content_type = content_type || (Mime[formats.first] if formats)
|
||||
self.response.charset = false if self.response
|
||||
self.response_body = " "
|
||||
else
|
||||
headers.delete('Content-Type')
|
||||
|
|
|
@ -260,14 +260,18 @@ module ActionDispatch # :nodoc:
|
|||
return if headers[CONTENT_TYPE].present?
|
||||
|
||||
@content_type ||= Mime::HTML
|
||||
@charset ||= self.class.default_charset
|
||||
@charset ||= self.class.default_charset unless @charset == false
|
||||
|
||||
type = @content_type.to_s.dup
|
||||
type << "; charset=#{@charset}" unless @sending_file
|
||||
type << "; charset=#{@charset}" if append_charset?
|
||||
|
||||
headers[CONTENT_TYPE] = type
|
||||
end
|
||||
|
||||
def append_charset?
|
||||
!@sending_file && @charset != false
|
||||
end
|
||||
|
||||
def rack_response(status, header)
|
||||
assign_default_content_type_and_charset!(header)
|
||||
handle_conditional_get!
|
||||
|
|
|
@ -531,6 +531,10 @@ class TestController < ActionController::Base
|
|||
head :created, :content_type => "application/json"
|
||||
end
|
||||
|
||||
def head_ok_with_image_png_content_type
|
||||
head :ok, :content_type => "image/png"
|
||||
end
|
||||
|
||||
def head_with_location_header
|
||||
head :location => "/foo"
|
||||
end
|
||||
|
@ -1224,10 +1228,17 @@ class RenderTest < ActionController::TestCase
|
|||
def test_head_created_with_application_json_content_type
|
||||
post :head_created_with_application_json_content_type
|
||||
assert_blank @response.body
|
||||
assert_equal "application/json", @response.content_type
|
||||
assert_equal "application/json", @response.header["Content-Type"]
|
||||
assert_response :created
|
||||
end
|
||||
|
||||
def test_head_ok_with_image_png_content_type
|
||||
post :head_ok_with_image_png_content_type
|
||||
assert_blank @response.body
|
||||
assert_equal "image/png", @response.header["Content-Type"]
|
||||
assert_response :ok
|
||||
end
|
||||
|
||||
def test_head_with_location_header
|
||||
get :head_with_location_header
|
||||
assert_blank @response.body
|
||||
|
|
Loading…
Reference in a new issue