Chrome 更新后,无法在 Google Apps Script 网络应用程序中下载文件

Trouble downloading files in Google Apps Script web app after Chrome update

我有一个 Google Apps Script 网络应用程序 运行 一年多了,用户可以选择下载 csv 文件。它工作得很好,尽管在控制台中它给出了关于从不推荐使用的 iFrame 下载的警告。

更新 Chrome 后,我在尝试下载时遇到以下错误:

Download is disallowed. The frame initiating or instantiating the download is sandboxed, but the flag ‘allow-downloads’ is not set. See https://www.chromestatus.com/feature/5706745674465280 for more details.

当遵循上述link时,它提供了以下信息:

Chrome is planning on removing this capability - i.e. Chrome is going to block all downloads initiated from or instantiated in a sandboxed iframe by default. The embedder may add "allow-downloads" to the sandbox attributes list to opt in. This allows content providers to restrict malicious or abusive downloads.

如何将 "allow-downloads" 添加到 Google Apps 脚本环境中的沙盒属性?或者,是否有启用下载文件的解决方法?

在您的 iframe 标签中加入 sandbox="allow-downloads",其中包含用于下载 CSV 文件的代码。

这里https://issuetracker.google.com/issues/157368720讨论了HtmlService.XFrameOptionsMode.ALLOWALL应该在GAS网络应用程序沙盒上设置allow-downloads。我们应该关注这个问题的变化。

我发现了一个解决方法,如果您有下载按钮,您可以右键单击并在新选项卡中打开。您必须重命名该文件,但至少您可以得到它,直到有修复。

除了要求用户右键单击以下载内容之外,是否有一种变通方法允许网站实现点击时触发下载的按钮?

阅读已实现的功能时,我一定是遗漏了一些内容,但似乎没有针对不使用 iframe 并仅使用锚标记来触发下载的网站的规定。

现在推荐的触发下载的方式是什么?我确定我在这里不理解某些东西,因为肯定没有人会想到 pushing/accepting 生产中的变化禁止实现按钮下载东西的非常常见的用例。

所以,我肯定错过了一些东西,而且这里很厚。使用新版本的 Chromium,我怎样才能做出这样的作品?

<a download="my-download.pdf" target="_blank" href="my-download.pdf">Click here to download</a>

2020 年 7 月 29 日更新:

“允许下载”属性现已添加到沙盒属性中,下载文件不再有任何问题。