Spaces:
Sleeping
Sleeping
Download utils/middleware.py from kumudraj01/api_diff: direct link, hf CLI and curl.
- Browser
- Download file 1.19 kB
-
https://huggingface.co/spaces/kumudraj01/api_diff/resolve/main/utils/middleware.py
- Command line
-
hf download hf://spaces/kumudraj01/api_diff/utils/middleware.py
-
curl -L -o middleware.py https://huggingface.co/spaces/kumudraj01/api_diff/resolve/main/utils/middleware.py
1.19 kB
| from starlette.middleware.base import BaseHTTPMiddleware | |
| from starlette.requests import Request | |
| class SmartSchemeMiddleware(BaseHTTPMiddleware): | |
| """ | |
| Middleware to set the correct URL scheme (http or https) based on environment. | |
| - When running locally (host is 'localhost' or '127.0.0.1'), the scheme remains 'http'. | |
| - When deployed behind a proxy (e.g., on Hugging Face Spaces), the middleware checks for | |
| the 'x-forwarded-proto' header and uses its value to set the scheme (typically 'https'). | |
| This helps avoid mixed content issues (e.g., when generating static URLs in templates), | |
| especially when deploying to environments where HTTPS is terminated at the proxy level. | |
| """ | |
| async def dispatch(self, request: Request, call_next): | |
| # Detect local development by checking host | |
| host = request.headers.get("host", "") | |
| is_local = host.startswith("127.0.0.1") or host.startswith("localhost") | |
| # Only override scheme if not running locally | |
| if not is_local and "x-forwarded-proto" in request.headers: | |
| request.scope["scheme"] = request.headers["x-forwarded-proto"] | |
| return await call_next(request) |