由于“sameorigin”政策,Google Docs Viewer 不会在 iframe 中显示 Firebase 存储 URL

Posted

技术标签:

【中文标题】由于“sameorigin”政策,Google Docs Viewer 不会在 iframe 中显示 Firebase 存储 URL【英文标题】:Google Docs Viewer doesn't display Firebase storage URL in an iframe due to "sameorigin" policy 【发布时间】: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 以允许 *.谢谢 我使用这篇文章中的解决方案让它工作了:***.com/questions/56388987/… 【参考方案1】:

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

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

【讨论】:

该答案中的链接有点过时/损坏,而且我搜索过的几乎所有其他解决方案都使用谷歌文档查看器(或微软等价物)。对于我的用例,将 docx 转换为 html(例如)的软件不是我想要的,所以我需要一个在这种情况下工作的解决方案。

以上是关于由于“sameorigin”政策,Google Docs Viewer 不会在 iframe 中显示 Firebase 存储 URL的主要内容,如果未能解决你的问题,请参考以下文章

由于不符合所有文件访问权限政策,Google Play 商店不断被拒绝

由于网络政策问题,我的应用被 Google Play 拒绝了?

Google Play管理目标受众群体 ( 加入“亲子同乐计划“ 由于政策原因 “更新被拒“ 后的处理 )

拒绝在框架中显示,因为它将“X-Frame-Options”设置为“SAMEORIGIN”

此应用因违反 Google Play 开发者计划政策而从 Google Play 下架。 Android 应用拒绝

由于违反垃圾邮件政策,我的 APP 被暂停