FastAPI Middleware y CORS: Configuración Segura resuelve un problema frecuente en proyectos Python: Añade lógica transversal y permite solo los orígenes que necesita tu aplicación web. Esta guía explica el mecanismo, presenta un ejemplo ejecutable y marca los límites que evitan una implementación frágil.

Concepto y caso de uso

Middleware ejecuta lógica alrededor de cada petición. CORS es una política del navegador para llamadas entre orígenes distintos, es decir, cuando cambia esquema, host o puerto.

Para repasar los fundamentos relacionados, consulta también la guía de FastAPI. La integración es más simple cuando cada función recibe dependencias y datos explícitamente en lugar de depender de estado global.

Ejemplo práctico

from fastapi import FastAPI, Request
from fastapi.middleware.cors import CORSMiddleware

app = FastAPI()
app.add_middleware(
    CORSMiddleware,
    allow_origins=["https://app.example.com"],
    allow_credentials=True,
    allow_methods=["GET", "POST"],
    allow_headers=["Authorization", "Content-Type"],
)

@app.middleware("http")
async def request_id(request: Request, call_next):
    response = await call_next(request)
    response.headers["X-Request-ID"] = request.headers.get("X-Request-ID", "new")
    return response

Usa una lista explícita de orígenes si hay cookies o encabezados Authorization. El comodín no funciona con credenciales y concede más acceso del necesario.

Decisiones importantes

La elección correcta depende del contrato público, del volumen y del comportamiento ante fallos.

Considera concurrencia, entradas vacías y fallos parciales. Documenta cada límite que afecte a consumidores y usa nombres que expresen intención.

Errores frecuentes

El ejemplo mínimo no sustituye límites, manejo de errores y observabilidad. No confundas CORS con autenticación o firewall. Los clientes que no son navegadores aún pueden llamar a la API. Mantén el middleware breve y no registres tokens.

Evita capturar excepciones sin contexto o devolver resultados parciales como si fueran completos. Un fallo explícito suele ser más seguro que datos silenciosamente incorrectos.

Cómo validar

Valida el comportamiento y no solo el camino feliz. Prueba un preflight OPTIONS y una petición simple desde un origen permitido y otro bloqueado. Comprueba headers, estado y credenciales.

La documentación oficial, consultada el 28 de julio de 2026, detalla la API y debe ser la referencia para cambios futuros.