Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

496
Vistas
Chrome bloquea la descarga de archivos FastAPI usando FileResponse

Tengo un sitio web básico de FastAPI con un punto final para descargar una plantilla de Excel. La URL es https. Hasta hace poco, esto funcionaba bien en Chrome y Safari. A medida que la gente actualizó, Chrome ha estado bloqueando la descarga. Esto parece ser coherente con la política de contenido inseguro de Google implementada para "descargas de contenido mixto" que se describe aquí:

https://blog.chromium.org/2020/02/protección-de-los-usuarios-de-la-inseguridad.html

Mi punto final es bastante sencillo:

 @router.get('/download_data_template') def download_data_template(request: Request): '''Returns data template from library ''' # ### auth # page access is authorized here # end auth file_name = 'TEMPLATE schedule_input.xlsx' return FileResponse( path=db.get_library_path(file_name), filename=file_name, media_type='application/octet-stream', )

El punto final se llama desde una página html con plantilla Jinja2 con esto:

 <a class="btn btn-primary" href="{{ url_for('upload_schedule')}}" data-toggle="tooltip" data-delay='{"show":750, "hide":250}' data-placement="top" data-toggle="tooltip" data-delay='{"show":750, "hide":250}' data-placement="top" title="click to select and upload file. The file must be in property format.">upload schedule input workbook</a>

En Chrome, el panel del desarrollador muestra el siguiente error:

"Contenido mixto: el sitio en 'https://<my_url>.com/' se cargó a través de una conexión segura, pero el archivo en 'https://<my_url>.com/download_data_template' se redirigió a través de una conexión no segura. Este archivo debe publicarse a través de HTTPS. Esta descarga se ha bloqueado. Consulte https://blog.chromium.org/2020/02/protecting-users-from-insecure.html para obtener más detalles".

El archivo no es nada único, es un archivo básico de Excel .xlsx, una plantilla para que las personas completen.

Esto continúa funcionando bien en Safari y Edge, pero Chrome lo bloquea.

El artículo en el blog de Chrome es informativo, pero no veo cómo puedo hacer que mi descarga sea segura. He buscado sin éxito también.

¿Alguna idea sobre cómo puedo hacer una descarga de archivo básica, específicamente un archivo .xlsx, desde un disco usando FastAPI que se ajuste a la nueva política de Google?

Gracias por cualquier ayuda en esto.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En su lugar, puede usar HTTPSRedirectMiddleware para hacer que todas las solicitudes entrantes a http se redirijan al esquema seguro.

 from fastapi.middleware.httpsredirect import HTTPSRedirectMiddleware app = FastAPI() app.add_middleware(HTTPSRedirectMiddleware)

Además de lo anterior, podría usar URL relativas en lugar de usar url_for() dentro de su plantilla Jinja2; por ejemplo, href="/upload_schedule" . De esta forma, el esquema de la URL seguirá siendo https .

También puede intentar pasar el parámetro --proxy-headers a Uvicorn, como se describe aquí por @tiangolo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda