由于“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”