# retoor <retoor@molodetz.nl>
from __future__ import annotations
from starlette.requests import Request
HOP_HEADERS = frozenset(
{
"connection",
"keep-alive",
"proxy-authenticate",
"proxy-authorization",
"te",
"trailers",
"transfer-encoding",
"upgrade",
"host",
"content-length",
"content-encoding",
}
)
def forward_headers(request: Request, prefix: str) -> dict[str, str]:
headers = {
k: v for k, v in request.headers.items() if k.lower() not in HOP_HEADERS
}
headers["X-Forwarded-Prefix"] = prefix
headers["X-Script-Name"] = prefix
headers["X-Forwarded-Host"] = request.headers.get(
"host", request.url.hostname or ""
)
headers["X-Forwarded-Proto"] = request.headers.get(
"x-forwarded-proto", request.url.scheme
)
headers["Accept-Encoding"] = "identity"
return headers