最近的系统更新后,无法再在IE 11中下载文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最近的系统更新后,无法再在IE 11中下载文件相关的知识,希望对你有一定的参考价值。
在过去几周的某个时候,MS推出了Windows 10上的IE 11更新,我认为这可能会干扰我在ASP.NET Web应用程序中在iframe中下载Excel和PDF文件的能力。
此问题仅适用于Windows 10上的某些版本的IE 11(我的计算机位于11.192.16299.0)。尚未向其他Windows版本报告。使用某些旧版IE 11运行的机器显然不会遇到此问题。
我的应用程序有一个iframe,可以加载我自己的内容。将页面加载到iframe并尝试在该iframe中下载文件后,用户看起来没有任何反应。检查控制台,我注意到以下两个警告,这些警告已经在应用程序中出现了相当长的一段时间:
SEC7131:允许脚本和相同的原始访问权限,可能会破坏沙盒iframe的安全性。
DOM7011:此页面上的代码禁用了后退和前进缓存。有关更多信息,请参阅:http://go.microsoft.com/fwlink/?LinkID=291337
检查网络流量,我可以看到文件请求消失,响应又回来了。响应具有以下标头:
缓存控制:无缓存,无存储 内容 - 处理:附件;文件名= doc.pdf 内容长度:97542 内容类型:application / pdf 日期:星期四,2018年1月25日18:27:37 GMT 到期:-1 Pragma:没有缓存 服务器:Microsoft-IIS / 10.0 X-UA兼容:IE = Edge
这似乎是对我的正常要求。 Cache-Control被正确设置为no-cache,因为文档内容是动态生成的。
最后,我的代码隐藏中的代码启动了PDF的文件下载:
Public Sub DownloadPdf() Handles Pdf.Click
Dim pdf As Byte() = GetPdf()
With Response
.Clear()
.ClearHeaders()
With .Cache
.SetCacheability(HttpCacheability.NoCache)
.SetNoStore()
.SetExpires(Date.UtcNow.AddHours(-1))
.SetMaxAge(New TimeSpan(0, 0, 30))
End With
.ContentType = "application/pdf"
.AddHeader("Content-Disposition", "attachment; filename=doc.pdf")
.AddHeader("Content-Length", pdf.Length.ToString)
.BinaryWrite(pdf)
.Flush()
.End()
End With
End Sub
Excel下载代码非常相似。可以假设GetPdf()正常工作,因为PDF在其他浏览器(Edge,Chrome,Firefox)中生成和下载。
我检查了Internet和本地Intranet安全区域的IE设置,配置似乎正常。允许文件下载,允许插件运行(或在某些情况下需要提示)。我甚至试图全面放松安全设置以确定可能导致我的问题的原因,但我没有运气。在开发控制台中,我将调试器设置为中断所有异常,但在文件下载过程中不会抛出异常。
我可以从其他网站查看PDF并下载文件,但似乎我发现的大多数测试网站都提供静态内容。另一方面,我的文件是动态创建的,下载过程似乎有点不同。
我的设置有任何明显的问题吗?是否有任何安全或设置更改伴随最近的MS更新可能会干扰我的应用程序?我感谢任何和所有的帮助。谢谢你的期待。
在某些Windows 10版本(已确认1703和1709)中,IE安全设置已更改为阻止沙盒iframe文件下载。没有设置更改或解决方法我发现除了从iframe中删除沙盒之外,还可以解决此问题。
以上是关于最近的系统更新后,无法再在IE 11中下载文件的主要内容,如果未能解决你的问题,请参考以下文章
在 swift 3 中下载文件时,alamo fire 中的进度视图不会更新