【问题标题】:Which file downloads are blocked by Internet Explorer's Security Bar?Internet Explorer 的安全栏会阻止哪些文件下载?
【发布时间】:2013-12-06 14:20:58
【问题描述】:

标准场景:带有可下载为文件的报告的重 ajax Web 应用程序。

问题:Internet Explorer 使用黄色“安全栏”阻止文件下载。当您单击该栏并允许下载时,整个页面都会刷新,输入的数据会丢失。

问题:什么是可阻止下载?它是否查看 Content-disposition: attachment 标头?它是否拒绝来自 POST 请求的下载?有没有什么场景根本只是打开没有黄色条的下载框?

【问题讨论】:

    标签: internet-explorer download


    【解决方案1】:

    这与文件类型无关,与之前的用户操作有关。如果检测到“用户启动的操作”是下载的直接原因(例如,用户直接单击下载链接,或按下按钮等),则显示下载对话框而不是信息栏。

    #1 问题是网站使用用户点击导航到某个其他页面(例如,感谢您下载“foo”)并让那个页面尝试启动文件下载。由于导航导致 User-Initiated 标志丢失,因此信息栏会阻止下载。

    一些背景: XPSP2 引入了文件下载阻止程序来对抗恶意站点,这些站点会在站点加载时向用户发送恶意软件的下载提示。犯罪分子希望用户可能无意中接受了恶意下载。添加文件下载阻止程序后,尝试在没有前面的 UIA 的情况下执行下载的页面将导致显示信息栏:

    虽然对于合法网站来说避免这个信息栏是微不足道的(只需启动一次下载作为 UIA 的直接结果),但大多数合法网站都不会费心这样做。例如,一个以下载文件为主要目的的网站最有动力使下载文件成为一种愉快的用户体验,但在引入阻止程序六年后,从 Download.com 下载仍会触发此信息栏。甚至新的 IETestDrive.com 站点在用户尝试安装 IE9 平台预览版时也会显示此信息栏,因为当用户单击“安装预览”链接时,该站点会导航到新页面(而不是立即触发下载)。

    【讨论】:

    • 在我的例子中,我根据表单中选择的用户选择从 Javascript 生成 URL。然后我生成一个表单并提交它。所有这些都是在onclick 处理程序中完成的,但是栏仍然会触发。 :(
    • 我必须使用 POST 表单,因为还有一个相当大的字段具有一些序列化状态。大约 10KB。它不适合 URL。
    • 不,等等...在某些情况下,在我提交表单之前仍有 AJAX 请求,因此提交不是用户发起的操作。妈的……
    【解决方案2】:

    微软的定义是:

    Internet Explorer 将阻止文件 从下载如果看起来 您没有请求该文件。这个 如果网站试图 将文件下载到您的计算机 未经您的许可或如果您 请求了一个文件,但下载了 不要立即开始。

    我想我会为您提供一个案例示例,以及我从中得出的结论和 Microsoft 的定义,但我找不到可靠的联系。检查请求的“接受”与响应的“内容类型”,也许他们矛盾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-10
      • 2012-10-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多