Html iFrame跨源通信

Html iFrame跨源通信,html,security,iframe,same-origin-policy,Html,Security,Iframe,Same Origin Policy,我试图从iFrame src加载的一个js文件访问父对象。页面和iFrame src位于不同的域中。由于web安全和同源策略,我得到了未捕获的安全性错误:阻止了一个带有源的帧http://example.com:1211 从访问交叉原点帧 需要访问父对象并设置为iFrame变量之一。因此,我失去了window.postMessage的选项。有没有办法解决这个问题?请提供一些建议。正如SilverlightFox所说,postMessage应该跨不同的域工作 您是否可以访问父级和iframe sr

我试图从iFrame src加载的一个js文件访问父对象。页面和iFrame src位于不同的域中。由于web安全和同源策略,我得到了未捕获的安全性错误:阻止了一个带有源的帧http://example.com:1211 从访问交叉原点帧


需要访问父对象并设置为iFrame变量之一。因此,我失去了window.postMessage的选项。有没有办法解决这个问题?请提供一些建议。

正如SilverlightFox所说,postMessage应该跨不同的域工作

您是否可以访问父级和iframe src?如果是这样,您可以在iframe src中放置类似的内容来发送消息:

<script type="text/javascript">
function post(msg) {
        var msg = "Do something"; // Can be string or numeric.
        parent.postMessage(msg, '*');
    }
    post();
</script>
<script>    
function listener(event){ 
   if (event.origin !== 'https://myotherdomain.com' ){  //Optional check for message source
      return 
   }
   var info = event.data;
   DoSomething(info);
}

// Set up event handler when parent page loads.

if (window.addEventListener){ 
   addEventListener("message", listener, false) 
} else { 
   attachEvent("onmessage", listener) 
}
</script>
然后在您的家长中,收到以下消息:

<script type="text/javascript">
function post(msg) {
        var msg = "Do something"; // Can be string or numeric.
        parent.postMessage(msg, '*');
    }
    post();
</script>
<script>    
function listener(event){ 
   if (event.origin !== 'https://myotherdomain.com' ){  //Optional check for message source
      return 
   }
   var info = event.data;
   DoSomething(info);
}

// Set up event handler when parent page loads.

if (window.addEventListener){ 
   addEventListener("message", listener, false) 
} else { 
   attachEvent("onmessage", listener) 
}
</script>

你怎么说我丢失了window.postMessage选项?这应该可以用了?我在父级中使用session.js,想访问iframe源中的对象。如果我试图将对象转换为字符串,以便通过postmessage发送。但获取未捕获的TypeError:将循环结构转换为JSON。我是这个领域的新手,你能给我提点别的建议吗?在我的项目中,Bcz我需要在许多地方与家长沟通。