即使在iframe从首页收到消息后,跨域框架仍被阻止

时间:2018-08-02 07:55:33

标签: javascript security iframe cross-domain

我正在构建一个包含子页面的页面,该页面将被加载到主页面的iframe中。我希望主页(外部页面)可以与iframe中的页面进行交互。我在这篇文章中尝试解决方案:SecurityError: Blocked a frame with origin from accessing a cross-origin frame,但仍然遇到跨组织的阻塞。你能帮我看看吗?

主页(外部):

<html>
<body>

<iframe id ="myFrame" src="http://blink.ucsd.edu/" target="_parent" style="
    width: 100%;
    height: 500px;
    z-index: 999999999999999999999;
    position: fixed;
    top: 0;
    float: left;
"> </iframe>

<script> 
    document.getElementById("myFrame").onload = function(){
        document.getElementById("myFrame").contentWindow.postMessage('This is data','*');
    };
</script>
</body>
</html>

然后,在子页面中,我添加以下脚本以接收并打印出postMessage数据

<script> 
  console.log('Script from proxy was loaded');
  window.addEventListener('message', function(event) { 
  if (event.origin.indexOf(event.origin) == 0) {
      console.log('Tada message from outside page was recieved');
      console.log(event.data);
  }
  });
</script>

结果:iframe中的子页面已加载,子页面中的脚本已执行,子页面接收到来自外部的消息,但跨组织阻塞仍然存在。

enter image description here

0 个答案:

没有答案