提交 85e424de 编写于 作者: A Andriel Nuernberg

Avoid URI parsing

This parsing is unecessary once the Request object already has the
needed information.
上级 040a1dbb
......@@ -32,11 +32,14 @@ def call(env)
private
def redirect_to_https(request)
url = URI(request.url)
url.scheme = "https"
url.host = @host if @host
url.port = @port if @port
headers = { 'Content-Type' => 'text/html', 'Location' => url.to_s }
host = @host || request.host
port = @port || request.port
location = "https://#{host}"
location << ":#{port}" if port != 80
location << request.fullpath
headers = { 'Content-Type' => 'text/html', 'Location' => location }
[301, headers, []]
end
......
......@@ -196,6 +196,13 @@ def test_redirect_to_host_and_port
response.headers['Location']
end
def test_redirect_to_host_with_port
self.app = ActionDispatch::SSL.new(default_app, :host => "ssl.example.org:443")
get "http://example.org/path?key=value"
assert_equal "https://ssl.example.org:443/path?key=value",
response.headers['Location']
end
def test_redirect_to_secure_host_when_on_subdomain
self.app = ActionDispatch::SSL.new(default_app, :host => "ssl.example.org")
get "http://ssl.example.org/path?key=value"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册