提交 e16afe61 编写于 作者: A Aaron Patterson

stop applying default headers in ActionDispatch::Response

I'm making this change so that I can construct response objects that
*don't* have the default headers applied.  For example, I would like to
construct a response object from the return value of a controller.

If you need to construct a response object with the default headers,
then please use the alternate constructor:
`ActionDispatch::Response.create`
上级 28cb10b1
* ActionDispatch::Response#new no longer applies default headers. If you want
default headers applied to the response object, then call
`ActionDispatch::Response.create`. This change only impacts people who are
directly constructing an `ActionDispatch::Response` object.
* Accessing mime types via constants like `Mime::HTML` is deprecated. Please
change code like this:
......
......@@ -135,7 +135,7 @@ def self.controller_name
end
def self.make_response!(request)
ActionDispatch::Response.new.tap do |res|
ActionDispatch::Response.create.tap do |res|
res.request = request
end
end
......
......@@ -236,6 +236,10 @@ def to_hash
end
end
def initialize(status = 200, header = {}, body = [])
super(status, Header.new(self, header), body)
end
private
def before_committed
......@@ -257,10 +261,6 @@ def build_buffer(response, body)
buf
end
def merge_default_headers(original, default)
Header.new self, super
end
def handle_conditional_get!
super unless committed?
end
......
......@@ -585,7 +585,7 @@ def setup_controller_request_and_response
end
def build_response(klass)
klass.new
klass.create
end
included do
......
......@@ -103,13 +103,21 @@ def closed?
end
end
def self.create(status = 200, header = {}, body = [], default_headers: self.default_headers)
header = merge_default_headers(header, default_headers)
new status, header, body
end
def self.merge_default_headers(original, default)
default.respond_to?(:merge) ? default.merge(original) : original
end
# The underlying body, as a streamable object.
attr_reader :stream
def initialize(status = 200, header = {}, body = [], default_headers: self.class.default_headers)
def initialize(status = 200, header = {}, body = [])
super()
header = merge_default_headers(header, default_headers)
@header = header
self.body, self.status = body, status
......@@ -345,10 +353,6 @@ def before_committed
def before_sending
end
def merge_default_headers(original, default)
default.respond_to?(:merge) ? default.merge(original) : original
end
def build_buffer(response, body)
Buffer.new response, body
end
......
......@@ -7,7 +7,7 @@ module ActionDispatch
# See Response for more information on controller response objects.
class TestResponse < Response
def self.from_response(response)
new response.status, response.headers, response.body, default_headers: nil
new response.status, response.headers, response.body
end
# Was the response successful?
......
......@@ -4,7 +4,7 @@
class ResponseTest < ActiveSupport::TestCase
def setup
@response = ActionDispatch::Response.new
@response = ActionDispatch::Response.create
end
def test_can_wait_until_commit
......@@ -217,7 +217,7 @@ def test_only_set_charset_still_defaults_to_text_html
'X-Content-Type-Options' => 'nosniff',
'X-XSS-Protection' => '1;'
}
resp = ActionDispatch::Response.new.tap { |response|
resp = ActionDispatch::Response.create.tap { |response|
response.body = 'Hello'
}
resp.to_a
......@@ -236,7 +236,7 @@ def test_only_set_charset_still_defaults_to_text_html
ActionDispatch::Response.default_headers = {
'X-XX-XXXX' => 'Here is my phone number'
}
resp = ActionDispatch::Response.new.tap { |response|
resp = ActionDispatch::Response.create.tap { |response|
response.body = 'Hello'
}
resp.to_a
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册