【问题标题】:Google chrome dose not show pdf in iframe谷歌浏览器不会在 iframe 中显示 pdf
【发布时间】:2017-08-29 09:39:30
【问题描述】:

我使用 Pdf.js,我从 Web 服务 (this.attachmentSource) 获取 base64 文件,当我想添加 var iframe = "<iframe width=800 height=550 src='" + this.attachmentSource + "' > </iframe>"时,对于谷歌浏览器中的某些 pdf,我将 iframe 设为空,但在 Mozila 中一切正常,谁能解释这个谜团?

【问题讨论】:

  • 你试过 吗?
  • 如果您不在 HTML 中添加 src,而是在通过 JavaScript 将元素附加到 DOM 后添加它会怎样?
  • @Diego 是的,我尝试过对象,结果相同。
  • @apokryfos 在 mozila 中运行良好,我认为不可能是那个问题。
  • 您的数据源是否按照the spec正确格式化?

标签: javascript php google-chrome pdf.js


【解决方案1】:

我碰巧注意到:服务器响应头:

x-frame-options: DENY

拒绝选项是最安全的,可以防止在框架中使用当前页面。更常见的是使用 SAMEORIGIN。

我已经在使用带有 Lambda@Edge 函数的 AWS CloudFront,所以我在这里找到了解决方案:Configuring X-Frame-Options Response Header on AWS CloudFront and S3

如果您使用不同的服务器堆栈,则必须相应地调整服务器响应标头。

【讨论】:

    【解决方案2】:

    我在尝试嵌入 PDF 时遇到了同样的问题。我尝试了 <iframe><embed> 两种方法,但它们仍然无法在 Chrome 中打开。

    我的解决方案是在 Adob​​e Acrobat 中打开 PDF,然后在“保护”选项卡下选择“删除隐藏信息”。 我没有创建此 PDF,所以我不确定是哪个政策等导致了问题。

    希望这会有所帮助!

    【讨论】:

      【解决方案3】:

      我找到了问题 iframe 被 chrome 检测到不安全的内容并阻止 iframe 加载。仅当在 PC 上使用 Chrome、IE Firefox、Safari 工作正常时才会发生这种情况。 Safari 和 Chrome 在 iPad 上也能正常工作。 PC 上的 Chrome 似乎有一套不同的规则并阻止内容。选择 URL 标题栏中的盾牌可以显示内容。按下 Ctrl shift J 可提供有关被阻止的内容的一些信息。 如果所有浏览器都遵循一套规则,那不是很好吗

      【讨论】:

      • 感谢您的回复。我该如何解决这个问题,我在 Chrome 中一切正常。
      • @Vahe Galstyan 我试图找到解决这个问题的方法。如果有用,请接受这个答案。
      【解决方案4】:

      iFrame 不支持大部分内容。例如:如果您的应用程序中有图表,则不会显示。请改用嵌入或对象。

      <object data="{{srcUrlTrusted}}" width="100%" height="800">
          <embed ng-src="{{srcUrlTrusted}}" width="100%" height="800"> </embed> 
      </object>
      

      【讨论】:

      • 为什么使用角度?使用 src 代替 ng-src
      • @Diego 是的,当然我们可以使用 src 而不是 ng-src。以上只是我代码库中的一个sn-p。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 2011-07-27
      • 1970-01-01
      • 2021-08-26
      • 2018-10-04
      • 1970-01-01
      • 2015-07-22
      相关资源
      最近更新 更多