sat*_*oru 6 python internet-explorer web2py
我试图实现一个"下载链接"并将其放在我的一个报表中,以便用户可以下载一个csv文件并使用Excel等应用程序打开它.
记录是根据用户的查询动态生成的.
所以在我的控制器的某个地方有类似的东西:
response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)
Run Code Online (Sandbox Code Playgroud)
这适用于FireFox和Chrome,但在IE中失败.
当我打印出响应标题时,我发现web2py在我的响应中添加了几个标题:'Expires','Cache-Control'等...
当我通过执行以下操作删除"Cache-Control"标头时:
del response.headers['Cache-Control']
Run Code Online (Sandbox Code Playgroud)
它适用于IE.
因此,IE似乎无法处理可将"Cache-Control"设置为特定值的可下载文件.
现在,我的问题是:
为什么web2py会隐式添加这些响应头?也许没有办法把它关掉?
当我以这种方式删除'Cache-Control'标题时,有任何副作用吗?
提前致谢.
我不确定正在发送什么样的Cache控件头但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"');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |