no_cache.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. """
  2. Middleware para agregar headers de no-cache a las respuestas
  3. """
  4. from starlette.middleware.base import BaseHTTPMiddleware
  5. from starlette.requests import Request
  6. from starlette.responses import Response
  7. class NoCacheMiddleware(BaseHTTPMiddleware):
  8. """
  9. Middleware que agrega headers de no-cache a todas las respuestas
  10. que sirven archivos de la carpeta public
  11. """
  12. async def dispatch(self, request: Request, call_next):
  13. response = await call_next(request)
  14. # Lista de rutas que deben tener headers de no-cache
  15. no_cache_paths = [
  16. "/",
  17. "/register",
  18. "/verify",
  19. "/express/",
  20. "/register/",
  21. "/images/"
  22. ]
  23. # Verificar si la ruta actual debe tener headers de no-cache
  24. should_no_cache = any(
  25. request.url.path.startswith(path) for path in no_cache_paths
  26. )
  27. if should_no_cache:
  28. # Agregar headers de no-cache
  29. response.headers["Cache-Control"] = "no-cache, no-store, must-revalidate, max-age=0"
  30. response.headers["Pragma"] = "no-cache"
  31. response.headers["Expires"] = "0"
  32. return response