Invalid parsing of Forwarded header fixed
_parse_rfc7239_header() did not parse properly
a Forwarded header with additional spaces
Closes-Bug: #1711573
Change-Id: Ic8b7f9698d7b3440005b17d249b1c8f0f66dae8a
(cherry picked from commit 480d60ac85
)
This commit is contained in:
parent
db1fac7401
commit
d9ad4bae1e
|
@ -49,7 +49,7 @@ class HTTPProxyToWSGI(base.ConfigurableMiddleware):
|
|||
entry = {}
|
||||
for d in proxy.split(";"):
|
||||
key, _, value = d.partition("=")
|
||||
entry[key.lower()] = value
|
||||
entry[key.lower().strip()] = value.strip()
|
||||
result.append(entry)
|
||||
return result
|
||||
|
||||
|
|
|
@ -89,6 +89,18 @@ class TestHTTPProxyToWSGI(test_base.BaseTestCase):
|
|||
response = self.request.get_response(self.middleware)
|
||||
self.assertEqual(b"https://localhost:80/", response.body)
|
||||
|
||||
def test__parse_rfc7239_header(self):
|
||||
expected_result = [{'for': 'foobar', 'proto': 'https'},
|
||||
{'for': 'foobaz', 'proto': 'http'}]
|
||||
|
||||
result = self.middleware._parse_rfc7239_header(
|
||||
"for=foobar;proto=https, for=foobaz;proto=http")
|
||||
self.assertEqual(expected_result, result)
|
||||
|
||||
result = self.middleware._parse_rfc7239_header(
|
||||
"for=foobar; proto=https, for=foobaz; proto=http")
|
||||
self.assertEqual(expected_result, result)
|
||||
|
||||
def test_rfc7239_proto_host(self):
|
||||
self.request.headers['Forwarded'] = (
|
||||
"for=foobar;proto=https;host=example.com, for=foobaz;proto=http")
|
||||
|
|
Loading…
Reference in New Issue