Skip to content

Commit

Permalink
Merge pull request #8093 from nikitug/keep_app_x_ua_compatible
Browse files Browse the repository at this point in the history
Fix #8086 (BestStandardsSupport rewrites app X-UA-Compatible header)

Conflicts:
	actionpack/CHANGELOG.md
  • Loading branch information
carlosantoniodasilva committed Nov 8, 2012
1 parent 3d25292 commit 90a5ec7
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 1 deletion.
5 changes: 5 additions & 0 deletions actionpack/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
## Rails 3.2.10 (unreleased) ##

* `BestStandardsSupport` middleware now appends it's `X-UA-Compatible` value to app's
returned value if any. Fix #8086 [Backport #8093]

*Nikita Afanasenko*

* prevent double slashes in engine urls when `Rails.application.default_url_options[:trailing_slash] = true` is set
Fix #7842

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@ def initialize(app, type = true)

def call(env)
status, headers, body = @app.call(env)
headers["X-UA-Compatible"] = @header

if headers["X-UA-Compatible"] && @header
headers["X-UA-Compatible"] << "," << @header.to_s
else
headers["X-UA-Compatible"] = @header
end

[status, headers, body]
end
end
Expand Down
34 changes: 34 additions & 0 deletions actionpack/test/dispatch/best_standards_support_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
require 'abstract_unit'

class BestStandardsSupportTest < ActiveSupport::TestCase
def test_with_best_standards_support
_, headers, _ = app(true, {}).call({})
assert_equal "IE=Edge,chrome=1", headers["X-UA-Compatible"]
end

def test_with_builtin_best_standards_support
_, headers, _ = app(:builtin, {}).call({})
assert_equal "IE=Edge", headers["X-UA-Compatible"]
end

def test_without_best_standards_support
_, headers, _ = app(false, {}).call({})
assert_equal nil, headers["X-UA-Compatible"]
end

def test_appends_to_app_headers
app_headers = { "X-UA-Compatible" => "requiresActiveX=true" }
_, headers, _ = app(true, app_headers).call({})

expects = "requiresActiveX=true,IE=Edge,chrome=1"
assert_equal expects, headers["X-UA-Compatible"]
end

private

def app(type, headers)
app = proc { [200, headers, "response"] }
ActionDispatch::BestStandardsSupport.new(app, type)
end

end

0 comments on commit 90a5ec7

Please sign in to comment.