最近的系统更新后,无法再在IE 11中下载文件

问题描述 投票:0回答:1

在过去几周的某个时候,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更新可能会干扰我的应用程序?我感谢任何和所有的帮助。谢谢你的期待。

asp.net internet-explorer iframe download
1个回答
0
投票

在某些Windows 10版本(已确认1703和1709)中,IE安全设置已更改为阻止沙盒iframe文件下载。没有设置更改或解决方法我发现除了从iframe中删除沙盒之外,还可以解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.