aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorTobias Lütke <tobias.luetke@gmail.com>2007-03-05 18:24:17 +0000
committerTobias Lütke <tobias.luetke@gmail.com>2007-03-05 18:24:17 +0000
commite52c28a425192966379ecf4ae3b20f0b9442e9e2 (patch)
treea64f7fc0dbbb5e8201e1b6d0fe7409303aaa2aca /actionpack
parent0e8c3b8dd974a19855f41cb319579567449461ed (diff)
downloadrails-e52c28a425192966379ecf4ae3b20f0b9442e9e2.tar.gz
rails-e52c28a425192966379ecf4ae3b20f0b9442e9e2.tar.bz2
rails-e52c28a425192966379ecf4ae3b20f0b9442e9e2.zip
Ignore odd charset declaration in CONTENT_TYPE header which would throw off mime type lookup.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@6340 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionpack')
-rwxr-xr-xactionpack/lib/action_controller/request.rb3
-rw-r--r--actionpack/test/controller/request_test.rb19
2 files changed, 21 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/request.rb b/actionpack/lib/action_controller/request.rb
index cc469e2e74..38584a6481 100755
--- a/actionpack/lib/action_controller/request.rb
+++ b/actionpack/lib/action_controller/request.rb
@@ -58,7 +58,8 @@ module ActionController
def content_type
@content_type ||=
begin
- content_type = @env['CONTENT_TYPE'].to_s.downcase
+ # Receive header sans any charset information.
+ content_type = @env['CONTENT_TYPE'].to_s.sub(/\s*\;.*$/, '').strip.downcase
if x_post_format = @env['HTTP_X_POST_DATA_FORMAT']
case x_post_format.to_s.downcase
diff --git a/actionpack/test/controller/request_test.rb b/actionpack/test/controller/request_test.rb
index 59297a798c..4914df679c 100644
--- a/actionpack/test/controller/request_test.rb
+++ b/actionpack/test/controller/request_test.rb
@@ -323,6 +323,25 @@ class RequestTest < Test::Unit::TestCase
@request.env["HTTP_ACCEPT"] = "text/javascript"
assert_equal Mime::JS, @request.format
end
+
+ def test_content_type
+ @request.env["CONTENT_TYPE"] = "text/html"
+ assert_equal Mime::HTML, @request.content_type
+ end
+
+ def test_content_no_type
+ assert_equal nil, @request.content_type
+ end
+
+ def test_content_type_xml
+ @request.env["CONTENT_TYPE"] = "application/xml"
+ assert_equal Mime::XML, @request.content_type
+ end
+
+ def test_content_type_with_charset
+ @request.env["CONTENT_TYPE"] = "application/xml; charset=UTF-8"
+ assert_equal Mime::XML, @request.content_type
+ end
protected
def set_request_method_to(method)