# retoor 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