无法访问同域的iframe

问题描述 投票:0回答:1

我正在尝试在 iframe 中加载 pdf 并设置高度以匹配文档的高度。

var frame = document.getElementById("preview_frame");
frame.onload = function() {
  this.style.height = this.contentWindow.document.documentElement.scrollHeight + 'px';
}
frame.src = frame.getAttribute("data-url") + "/files/preview/" + target;

文档正在加载,但我在控制台中看到此错误:

未捕获的 DOMException:访问跨源对象上的属性“文档”的权限被拒绝

带有 iframe 的页面和 pdf 文档都在同一域内本地托管:

页面网址:

https://locdev/project-url/public_html

pdf 网址:
https://locdev/project-url/public_html/files/preview/file.pdf

我什至尝试添加

Header set Access-Control-Allow-Origin "https://locdev"

/project-url/public_html/files/preview/.htaccess

当我直接打开 pdf 文档时,我看到它正在被添加,但我仍然在带有 iframe 的页面上收到错误。

我注意到,如果我用图像替换 pdf 文件,那么代码就可以工作。

如何解决这个问题?

javascript pdf iframe same-origin-policy
1个回答
0
投票

问题是 PDF 不是网页内容。

要克服这个问题,您需要使用 JavaScript PDF 渲染器,例如 PDF.js。然后,您可以将其与 iframe-resizer 结合使用,使 iframe 调整为文档的大小。

© www.soinside.com 2019 - 2024. All rights reserved.