diff --git a/oslo_middleware/http_proxy_to_wsgi.py b/oslo_middleware/http_proxy_to_wsgi.py index 4d68bcf..701e5c8 100644 --- a/oslo_middleware/http_proxy_to_wsgi.py +++ b/oslo_middleware/http_proxy_to_wsgi.py @@ -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 diff --git a/oslo_middleware/tests/test_http_proxy_to_wsgi.py b/oslo_middleware/tests/test_http_proxy_to_wsgi.py index d114ad7..7fe9a2a 100644 --- a/oslo_middleware/tests/test_http_proxy_to_wsgi.py +++ b/oslo_middleware/tests/test_http_proxy_to_wsgi.py @@ -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")