From eeb05fdf418bc49f2834bf59c36ea3ac61a57ee4 Mon Sep 17 00:00:00 2001 From: Yoann Lecuyer Date: Wed, 16 Mar 2022 19:38:36 +0100 Subject: [PATCH] Restore: changed behavior for request.host when multiple X-Forwarded-Host are used --- lib/rack/request.rb | 2 +- test/spec_request.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/rack/request.rb b/lib/rack/request.rb index e633540bd..9cc839231 100644 --- a/lib/rack/request.rb +++ b/lib/rack/request.rb @@ -359,7 +359,7 @@ def forwarded_port def forwarded_authority if value = get_header(HTTP_X_FORWARDED_HOST) - wrap_ipv6(split_header(value).first) + wrap_ipv6(split_header(value).last) end end diff --git a/test/spec_request.rb b/test/spec_request.rb index 92316f383..6b7cc6646 100644 --- a/test/spec_request.rb +++ b/test/spec_request.rb @@ -167,6 +167,11 @@ class RackRequestTest < Minitest::Spec req.host.must_equal "example.org" req.hostname.must_equal "example.org" + req = make_request \ + Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost:81", "HTTP_X_FORWARDED_HOST" => "somehost:9292, anotherhost:9292, example.org:9292") + req.host.must_equal "example.org" + req.hostname.must_equal "example.org" + req = make_request \ Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost:81", "HTTP_X_FORWARDED_HOST" => "[2001:db8:cafe::17]:47011") req.host.must_equal "[2001:db8:cafe::17]"