Html iFrame跨源通信
我试图从iFrame src加载的一个js文件访问父对象。页面和iFrame src位于不同的域中。由于web安全和同源策略,我得到了未捕获的安全性错误:阻止了一个带有源的帧http://example.com:1211 从访问交叉原点帧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变量之一。因此,我失去了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我需要在许多地方与家长沟通。