fix: add HTTPSRedirectMiddleware to prevent mixed content errors

This commit is contained in:
Ricel Leite 2026-02-18 23:48:31 -03:00
parent b1adf39682
commit 273e50886e
1 changed files with 19 additions and 3 deletions

View File

@ -1,15 +1,27 @@
"""JIRA AI Fixer - Enterprise Issue Analysis Platform.""" """JIRA AI Fixer - Enterprise Issue Analysis Platform."""
from contextlib import asynccontextmanager from contextlib import asynccontextmanager
from fastapi import FastAPI from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse from fastapi.responses import FileResponse, RedirectResponse
from starlette.middleware.base import BaseHTTPMiddleware
import os import os
from app.core.config import settings from app.core.config import settings
from app.core.database import init_db from app.core.database import init_db
from app.api import api_router from app.api import api_router
class HTTPSRedirectMiddleware(BaseHTTPMiddleware):
"""Force HTTPS in redirects when behind reverse proxy."""
async def dispatch(self, request: Request, call_next):
response = await call_next(request)
# Fix Location header to use HTTPS if behind proxy
if response.status_code in (301, 302, 303, 307, 308):
location = response.headers.get("location", "")
if location.startswith("http://"):
response.headers["location"] = location.replace("http://", "https://", 1)
return response
@asynccontextmanager @asynccontextmanager
async def lifespan(app: FastAPI): async def lifespan(app: FastAPI):
# Startup # Startup
@ -24,9 +36,13 @@ app = FastAPI(
docs_url="/api/docs", docs_url="/api/docs",
redoc_url="/api/redoc", redoc_url="/api/redoc",
openapi_url="/api/openapi.json", openapi_url="/api/openapi.json",
lifespan=lifespan lifespan=lifespan,
redirect_slashes=False # Disable automatic slash redirects
) )
# Add HTTPS redirect middleware
app.add_middleware(HTTPSRedirectMiddleware)
# CORS # CORS
app.add_middleware( app.add_middleware(
CORSMiddleware, CORSMiddleware,