如何防止 Chrome 阻止 XLSX 下载?

How can I prevent Chrome from blocking a XLSX download?

最近对 Chrome 的更新已开始阻止来自我们网站的 XLSX 下载。

我已阅读 Chrome 的文档和指南,了解他们如何确定某物是否具有潜在危害,但没有提及如何解决除联系他们之外的问题。我们的文件和我们的网站符合他们制定的所有准则。他们的大部分文档都是基于可执行文件下载,因此不清楚这些信息如何影响简单文件下载。

站点和文件由使用 HTTPS 的同一主机提供。下载由链接到提供文件的 API 的锚标记驱动。

其他类似 API 服务生成的相同数据的 CSV 文件或 PDF 文件不受影响。

我还修改了文件生成以输出 XLS 文件而不是 XLSX,但这些文件也被阻止了。

以下是响应的 header,据我所知,关于配置或内容类型的所有内容都是正确的,所以我没有看到 chrome 使用它们来阻止文件.

Cache-Control: must-revalidate, private
Connection: keep-alive
Content-disposition: attachment; filename="test-file.xlsx"
Content-Type: application/xlsx
Date: Fri, 17 Jul 2020 16:04:41 GMT
Expires: -1
Server: nginx
transfer-encoding: chunked
X-DNS-Prefetch-Control: off
X-Frame-Options: SAMEORIGIN

我还验证了这些文件实际上并不危险,它们包含简单的 excel 数据,没有任何奇怪的东西被注入或被破坏。

我们也测试了各种下载方式,直接锚链接,表单帖子,blobs等等,总是被屏蔽。

是否有特定的 request/response header 或下载方法或标记可以阻止 chrome 阻止文件?

更新

现在似乎已通过一些静默更新解决。

对于关注此直播的人,Chromium 团队正在跟踪并修复此问题:https://bugs.chromium.org/p/chromium/issues/detail?id=1106858

Comment 8 by vakh@chromium.org on Fri, Jul 17, 2020, 2:42 PM EDT We're in the process of rolling out a fix for this issue so if you try now, it's likely you won't see a warning. If you still do, please try again in approximately 30 minutes.

我们今天早些时候遇到了类似的问题。我们的网站使用 TAR 个文件来交换数据 (upload/download)。 HTTPS 用于所有通信。文件存储在 S3 上,用户被重定向到 S3 以下载文件。此设置在过去几年中一直运行良好。

今天早上大约 11:20am(美国东部时间)突然,大多数用户开始遇到下载问题 -- 下载的文件被 Chrome 阻止。这仅在 Chrome 和多个平台上发生(Windows 和 MacOS,我们没有任何 Linux 用户)。多个用户报告了该问题,实际上是大多数用户。从 v83 升级到最新的 v84 没有帮助。

然后大约 12:50pm(1.5 小时后),问题消失了。 10-20分钟后,它又出现了。看来问题又解决了

我从昨天开始就一直在 运行 我的 Chrome (v83)。在第一波“浪潮”中,我经常遇到这个问题,而不是根本看不到它。然后“第二波”开始了,又开始看到了,现在没了。