阻止来源为“http://localhost:8080”的框架访问来源为“http://pentaho5XXX.com”的框架

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

我已经花了大约两天的时间尝试做一些我不知道该怎么做的事情。 问题是我正在自定义 Pentaho 用户控制台(这是部署在 tomcat 上的某种 Web 应用程序,其中有很多 iframe)。

我正在自定义的html位于一个iframe(让我们称该iframe“A”)内,带有导航水平菜单,其正下方有另一个iframe(让我们称这个iframe“B”)。导航的每个链接和一些 iframe“B”都加载在 iframe“B”上,并且所有 url 都指向域名为 www.pentaho5XXX.com 的托管服务器。

我正在 localhost:8080 上进行所有测试。我的问题是,当我尝试访问 Iframe“B”(加载 url 的 iframe)内部的变量时,控制台给出以下错误:

未捕获的安全错误:无法在“窗口”上执行“警报”:阻止来源为“http://localhost:8080”的框架访问来源为“http://pentaho5XXX.com”的框架协议,域和端口必须匹配。

我知道这是因为我正在尝试访问托管在不同域中的 url 的 DOM。当我尝试使用 localhost:8080 网页执行此操作并且 iframe 不加载该页面时,我的问题就出现了(当我输入我的 ip:8080/mypage 时,它会冻结并且不执行任何操作,当我输入localhost:8080 它加载了一个空白页面)并且导航器控制台没有给我任何错误。

我在新标签上检查了相同的网址,它适用于两个链接,所以我不知道为什么会发生这种情况。

我可能做错的另一件事是我尝试访问dom变量并更改同一iframe(“B”)内的iframe“B”的src

如果有人可以帮助我,我会非常高兴,但我会感谢您花时间阅读,所以无论如何谢谢您。

iframe cross-domain pentaho iframe-app same-origin-policy
1个回答
0
投票

由于“同源策略”,您尝试做的事情是不可能的,网络导航器不允许您访问“外部 iframe”的属性,也不允许访问其内容。当服务器像您的服务器一样位于本地时,浏览器的行为可能会有所不同,但它不会让您访问 iframe 标记。

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