【问题标题】:Google Docs Viewer doesn't display Firebase storage URL in an iframe due to "sameorigin" policy由于“sameorigin”政策,Google Docs Viewer 不会在 iframe 中显示 Firebase 存储 URL
【发布时间】:2020-10-10 01:41:08
【问题描述】:

我已阅读有关此错误的信息,但建议的解决方案似乎不适用于 .doc/.docx 文件。

我正在构建一个涉及显示 pdf/doc 文件的网络应用程序。这些文件存储在谷歌存储桶中,我正在使用 Firebase 的getDownloadURL() 方法获取一个链接,我可以将其用作<iframe> 中的源。这直接适用于 PDF 文件。但是,鉴于 doc/docx 文件无法直接显示,我尝试通过 Google Docs Viewer 显示它们,方法是获取生成的 URL 并附加如下:

https://docs.google.com/gview?url=https://firebasestorage.googleapis.com/v0/b/project-name.appspot.com/o/filename?alt=media&token=a-b-c-1-2-3

这会产生Refused to display <URL> in a frame because it set X-Frame-Options to same origin 错误。我也尝试过adding&embedded=true 到URL,正如其他类似查询中所建议的那样,但这会产生另一个错误:Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist. 由于“&”,我认为这可能是issue with parsing the URL,所以我将其更改为“%26”,但“sameorigin”错误仍然存​​在。

我不知道如何解决这个问题,如果有任何关于如何解决这个问题(或解决问题的替代方法)的指导,我将不胜感激。

【问题讨论】:

  • 您好 Patrice99,您解决了这个问题吗?我有同样的需求并面临同样的错误。我什至在谷歌存储中设置了 CORS 以允许 *.谢谢
  • 我使用这篇文章中的解决方案让它工作了:stackoverflow.com/questions/56388987/…

标签: html firebase google-cloud-storage same-origin-policy x-frame-options


【解决方案1】:

Google 文档会创建自己的存储对象,并且只会提供这些对象。它不会显示来自其他存储库的 doc/docx 格式的其他对象。

听起来您需要一种方法来将您上传(使用 Firebase)的对象渲染到 GCS。我没有做那个具体事情的经验,但我建议你尝试找到一些可以做到这一点的软件。例如,我通过快速网络搜索找到了Render docx file in a browser

【讨论】:

  • 该答案中的链接有点过时/损坏,而且我搜索过的几乎所有其他解决方案都使用谷歌文档查看器(或微软等价物)。对于我的用例,将 docx 转换为 HTML(例如)的软件不是我想要的,所以我需要一个在这种情况下工作的解决方案。
猜你喜欢
  • 2015-03-05
  • 2016-05-19
  • 1970-01-01
  • 2019-12-01
  • 2021-10-22
  • 2016-03-30
  • 2021-01-16
  • 2019-02-04
  • 2020-04-14
相关资源
最近更新 更多