fix: redirects
This commit is contained in:
+3
-5
@@ -132,7 +132,7 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
|||||||
|
|
||||||
def send_proxy(self, url: str) -> None:
|
def send_proxy(self, url: str) -> None:
|
||||||
headers = dict(self.headers)
|
headers = dict(self.headers)
|
||||||
headers["Host"] = urllib.parse.urlparse(url).netloc
|
headers["Host"] = (target_host := urllib.parse.urlparse(url).netloc)
|
||||||
headers["X-Real-IP"] = self.client_address[0]
|
headers["X-Real-IP"] = self.client_address[0]
|
||||||
headers["X-Forwarded-Host"] = self.host
|
headers["X-Forwarded-Host"] = self.host
|
||||||
headers["X-Forwarded-For"] = self.client_address[0]
|
headers["X-Forwarded-For"] = self.client_address[0]
|
||||||
@@ -156,16 +156,14 @@ class BaseHandler(abc.ABC, http.server.BaseHTTPRequestHandler):
|
|||||||
return
|
return
|
||||||
self.send_response(response.status_code, response.reason)
|
self.send_response(response.status_code, response.reason)
|
||||||
for header, value in response.headers.items():
|
for header, value in response.headers.items():
|
||||||
if header.lower() == "location":
|
if header.lower() not in [
|
||||||
self.send_header(header, value.removeprefix(url))
|
|
||||||
elif header.lower() not in [
|
|
||||||
"content-length",
|
"content-length",
|
||||||
"content-encoding",
|
"content-encoding",
|
||||||
"transfer-encoding",
|
"transfer-encoding",
|
||||||
"server",
|
"server",
|
||||||
"date",
|
"date",
|
||||||
]:
|
]:
|
||||||
self.send_header(header, value)
|
self.send_header(header, value.replace(target_host, self.host))
|
||||||
self.send_header("Content-Length", str(out_size := len(response.content)))
|
self.send_header("Content-Length", str(out_size := len(response.content)))
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
if out_size > 0:
|
if out_size > 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user