python - "download link "在 IE 中失败

标签 python internet-explorer web2py

我试图实现一个“下载链接”并将其放在我的一个报告表旁边,以便用户可以下载一个 csv 文件并使用 Excel 等应用程序打开它。

记录是根据用户的查询动态生成的。

所以在我的 Controller 的某个地方有类似的东西:

response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)

这在 FireFox 和 Chrome 中都有效,但在 IE 中失败。

当我打印出响应 header 时,我发现 web2py 将几个 header 添加到我的响应中:'Expires'、'Cache-Control' 等...

当我通过执行以下操作删除“Cache-Control” header 时:

del response.headers['Cache-Control']

它在 IE 中工作。

所以 IE 似乎无法处理“缓存控制”设置为特定值的可下载文件。

现在,我的问题是:

  • 为什么 web2py 隐式地添加这些响应 header ?也许没有办法将其关闭?

  • 以这种方式删除“Cache-Control” header 时有任何副作用吗?

提前致谢。

最佳答案

我不确定正在/正在发送什么缓存控制 header ,但 IE 有一个下载文件的错误,就像您遇到的那样。

对于 IE,您必须启用缓存。当 IE 加载文件(例如 Excel 文件)时,在 Excel 中,它会从缓存目录加载它们,因此如果您不缓存它,Excel(或您的其他应用程序)将无法加载文件。

Eric Law (MSFT) 的主题:http://blogs.msdn.com/ieinternals/archive/2009/10/02/Internet-Explorer-cannot-download-over-HTTPS-when-no-cache.aspx

更新:如果您只是想强制下载...例如没有让 IE 在 IE 窗口中加载 excel 文件...然后一定要为附件设置完整的标题。

//PHP style
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="downloaded.pdf"');

关于python - "download link "在 IE 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999950/

相关文章:

Python 和 Urllib。如何处理网络异常?

python - time.sleep() 不暂停视频中的计时器

python - 如何导入protobuf模块

python - 选择选项值不起作用

css - 垂直居中工作,IE7 除外(表格单元格)

javascript - jQuery.fadeIn()/fadeOut()。无法在 IE7+8 下运行

c# - 从 WinForms 应用程序检测 IE 版本

mysql - 将一些元组插入到 web2py 中的表中

e-commerce - 什么是最可扩展/灵活的 FOSS 电子商务软件? (或者我应该自己动手?)

model-view-controller - web2py:如何在调用 Controller 之前执行代码?