阻止原始“http:// localhost:8080”的框架访问原始框架“http://pentaho5XXX.com”

时间:2016-05-30 19:06:26

标签: iframe cross-domain pentaho iframe-app allow-same-origin

我差不多2天试图做一些我无法弄清楚怎么做的事情。 问题是我正在定制Pentaho用户控制台(这是在tomcat上部署的某种web应用程序,其中有很多iframe在另一个内部)。

我正在自定义的html是在一个iframe(让我们称之为iframe“A”)里面有一个导航水平菜单,下面有另一个iframe(让我们称之为iframe“B”)。导航的每个链接和一些iframe“B”都加载在iframe“B”上,并且所有URL都指向具有域名www.pentaho5XXX.com的托管服务器。

我正在localhost:8080进行全部测试。我的问题是,当我尝试访问Iframe“B”(加载网址的iframe)中的变量时,控制台会给我以下错误:

  

未捕获的SecurityError:无法在“窗口”上执行“警报”:阻止具有原始“http://localhost:8080”的框架访问具有“http://pentaho5XXX.com”的框架“协议,域和端口必须匹配。

我理解这是因为我正在尝试访问托管在不同域中的网址的DOM。当我尝试使用localhost:8080网页并且iframe没有加载页面时我的问题出来了(当我把我的ip:8080 / mypage它放气并且什么都不做,当我把它放localhost:8080它加载我一个空白页面)导航器控制台没有给我任何错误。

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

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

如果有人可以帮助我,我会很高兴,但我很感激你读书的时间,所以无论如何,谢谢你。

1 个答案:

答案 0 :(得分:0)

由于“相同的原始政策”,您尝试做的事情是不可能的,网络导航器不允许您访问“外部iframe”的属性,也不允许您访问其内容。当服务器本地化时,浏览器可能会采取不同的行为,但不会让您访问iframe标记。