diff --git a/src/handlers.py b/src/handlers.py index 2d082b3..3887a78 100644 --- a/src/handlers.py +++ b/src/handlers.py @@ -136,6 +136,7 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler): def send_proxy(self, url: str) -> None: headers = dict(self.headers) headers["Host"] = urllib.parse.urlparse(url).netloc + headers["X-Forwarded-Host"] = self.host headers["X-Forwarded-For"] = self.client_address[0] headers["X-Real-IP"] = self.client_address[0] try: diff --git a/tests/test_handlers.py b/tests/test_handlers.py index c91be42..0d79e36 100644 --- a/tests/test_handlers.py +++ b/tests/test_handlers.py @@ -756,6 +756,7 @@ class TestRequestHandler(BaseHandlerTestCase): "data": None, "headers": { "Host": "example.com", + "X-Forwarded-Host": "localhost", "X-Forwarded-For": "127.0.0.1", "X-Real-IP": "127.0.0.1", }, @@ -795,6 +796,7 @@ class TestRequestHandler(BaseHandlerTestCase): "data": b"hello", "headers": { "Host": "example.com", + "X-Forwarded-Host": "localhost", "X-Forwarded-For": "127.0.0.1", "X-Real-IP": "127.0.0.1", "Content-Length": "5", @@ -834,6 +836,7 @@ class TestRequestHandler(BaseHandlerTestCase): "data": None, "headers": { "Host": "example.com", + "X-Forwarded-Host": "localhost", "X-Forwarded-For": "127.0.0.1", "X-Real-IP": "127.0.0.1", }, @@ -864,6 +867,7 @@ class TestRequestHandler(BaseHandlerTestCase): "data": None, "headers": { "Host": "example.com", + "X-Forwarded-Host": "localhost", "X-Forwarded-For": "127.0.0.1", "X-Real-IP": "127.0.0.1", }, @@ -903,6 +907,7 @@ class TestRequestHandler(BaseHandlerTestCase): "data": None, "headers": { "Host": "example.com", + "X-Forwarded-Host": "localhost", "X-Forwarded-For": "127.0.0.1", "X-Real-IP": "127.0.0.1", }, @@ -939,6 +944,7 @@ class TestRequestHandler(BaseHandlerTestCase): "data": None, "headers": { "Host": "example.com", + "X-Forwarded-Host": "host", "X-Forwarded-For": "127.0.0.1", "X-Real-IP": "127.0.0.1", },