generated from hjess/PythonTemplateProject
added middelware
Some checks failed
Build, Push, and Deploy to Nomad / docker-nomad (push) Has been cancelled
Some checks failed
Build, Push, and Deploy to Nomad / docker-nomad (push) Has been cancelled
This commit is contained in:
24
app.py
24
app.py
@@ -6,32 +6,28 @@ import json
|
||||
import os
|
||||
|
||||
from starlette.middleware.httpsredirect import HTTPSRedirectMiddleware
|
||||
|
||||
|
||||
from fastapi import FastAPI
|
||||
from starlette.middleware.base import BaseHTTPMiddleware
|
||||
from starlette.requests import Request
|
||||
|
||||
|
||||
class ProxyHeadersMiddleware(BaseHTTPMiddleware):
|
||||
async def dispatch(self, request: Request, call_next):
|
||||
# Fix protocol and host based on headers sent by NGINX
|
||||
proto = request.headers.get("X-Forwarded-Proto", "http")
|
||||
host = request.headers.get("X-Forwarded-Host")
|
||||
async def dispatch(self, request: Request, call_next):
|
||||
proto = request.headers.get("X-Forwarded-Proto", "http")
|
||||
host = request.headers.get("X-Forwarded-Host", request.headers.get("Host"))
|
||||
|
||||
if proto:
|
||||
request.scope["scheme"] = proto
|
||||
if host:
|
||||
request.headers["host"] = host
|
||||
# Update request scheme and host for correct URL generation
|
||||
request.scope["scheme"] = proto
|
||||
if host:
|
||||
request.scope["server"] = (host.split(":")[0], request.scope["server"][1])
|
||||
|
||||
response = await call_next(request)
|
||||
return response
|
||||
response = await call_next(request)
|
||||
return response
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
# Mount static files
|
||||
app.mount("/static", StaticFiles(directory="static"), name="static")
|
||||
app.add_middleware(ProxyHeadersMiddleware, allowed_hosts=["*"])
|
||||
app.add_middleware(ProxyHeadersMiddleware)
|
||||
|
||||
|
||||
# Templates directory
|
||||
|
||||
Reference in New Issue
Block a user