Estaba tratando de implementar un "enlace de descarga" y ponerlo junto a una de las tablas de informes para que los usuarios puedan descargar un archivo csv y abrirlo con aplicaciones como Excel."enlace de descarga" falla en IE
Los registros se generan de forma dinámica en función de la consulta realizada por los usuarios.
Así que en algún lugar de mi regulador hay algo así como:
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)
Esto funciona tanto en FireFox & Chrome, pero falla en IE.
Cuando imprimo las cabeceras de respuesta, he encontrado que varias cabeceras se añadieron a mi respuesta por web2py: 'Expira', 'Cache-Control', etc ...
Y cuando quito el 'caché -Control 'encabezado haciendo lo siguiente:
del response.headers['Cache-Control']
Funciona en IE.
Parece que IE tiene problemas para manejar un archivo descargable con 'Cache-Control' establecido en cierto valor.
Ahora, mi pregunta es:
¿Por qué web2py añadir estas cabeceras de respuesta, de manera implícita? y tal vez sin una forma de activarlo?
¿Hay algún efecto secundario cuando elimino el encabezado 'Cache-Control' de esta manera?
Gracias de antemano.
Este es un defecto conocido en ciertas versiones de IE: http://support.microsoft.com/kb/323308 –
Cuando estaba usando Django, los encabezados de respuesta son solo los que establecí explícitamente; sin embargo, en el caso de web2py, agregó encabezados de respuesta sin el conocimiento de los desarrolladores, por lo que creo que tal vez este no sea un buen diseño para un marco, le costó tiempo a las personas averiguar qué está sucediendo bajo el capó. – satoru
Al servir archivos estáticos, web2py establece encabezados de caché para asegurarse de que su navegador no solicite archivos que ya tiene y que no haya cambiado en el servidor. Cuando se sirve contenido dinámico, web2py se asegura de que el navegador no lo guarde en caché (este es su caso, creo). La filosofía de web2py es diferente a la de otros frameworks. Intenta hacer todo lo posible para que no tenga que aprender cómo hacerlo (en este caso, cómo administrar la memoria caché del navegador). Como se ha señalado, el problema es un error de IE. Lo mencionaré en la lista de correo web2py y lo discutiré con otros desarrolladores. – mdipierro