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 = {}
|
entry = {}
|
||||||
for d in proxy.split(";"):
|
for d in proxy.split(";"):
|
||||||
key, _, value = d.partition("=")
|
key, _, value = d.partition("=")
|
||||||
entry[key.lower()] = value
|
entry[key.lower().strip()] = value.strip()
|
||||||
result.append(entry)
|
result.append(entry)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -89,6 +89,18 @@ class TestHTTPProxyToWSGI(test_base.BaseTestCase):
|
|||||||
response = self.request.get_response(self.middleware)
|
response = self.request.get_response(self.middleware)
|
||||||
self.assertEqual(b"https://localhost:80/", response.body)
|
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):
|
def test_rfc7239_proto_host(self):
|
||||||
self.request.headers['Forwarded'] = (
|
self.request.headers['Forwarded'] = (
|
||||||
"for=foobar;proto=https;host=example.com, for=foobaz;proto=http")
|
"for=foobar;proto=https;host=example.com, for=foobaz;proto=http")
|
||||||
|
Loading…
Reference in New Issue
Block a user