在 Facebook 画布中运行的 Rails 应用程序中,我们有一个工作流程,登录用户可以在其中构建文档然后下载它。
文件准备好后,我们会显示一个链接。这只是一个 Rails 操作,它使用 dev 中的 send_file 或生产中的 head(使用适当的 NGINX 配置)呈现。这部分工作正常。
为了在不打开新的浏览器选项卡的情况下开始下载文件,我们将链接目标设置为空 iframe。
这是有效的,但不久前,可能是由于 Facebook 的安全更改,我们的链接停止工作。JavaScript 错误显示:
拒绝显示文档,因为 X-Frame-Options 禁止显示。
用户仍然可以在新选项卡中打开链接,它会下载文件,快速解决方法是使链接打开新的浏览器选项卡,但这并没有那么好的用户体验。
我们尝试更改标题中的 X-Frame-Options 和/或使用元标记,但这是画布(在 iframe 中运行),因此只是阻止了这些视图的显示。
我也尝试过这种形式的解决方案,但它没有做任何事情(我可能做错了)。
有什么方法可以构建一个按钮或链接,无需打开新的浏览器选项卡即可开始文件下载?