使用window.postMessage进行iframe跨域数据通信

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用window.postMessage进行iframe跨域数据通信相关的知识,希望对你有一定的参考价值。

参考技术A iframe跨域,但又需要进行通信,决定使用window.postMessage进行通信。以下是使用中遇到的一些注意点。

受限的window对象打印展示global,一开始以为是非window对象,后来经实验发现其实它就是子iframe的window对象,只不过是跨域受限,只能访问部分接口

通过给iframe传消息,获取到父级窗口的window,拿iframe的window跟父级的frames里存的iframe的受限window进行判断,结果为true。

一开始以为只要调用window.parent.postMessage('test'); 就能给父级传数据;

第二个参数指定哪个窗口可以接受消息,不在指定范围内的,不会传播。

所以猜测第二个参数不传的话,默认是同域窗口可以接收。所以才会出现同域可以,跨域接收不到。

一般不建议用*,会有安全问题,这里只作为测试

window.postMessage的第二个参数指定哪些窗口可以接收消息,不指定的话默认是同域可接收。故跨域情况下,需要指定第二个参数为父级域名,才能通信成功。

以上是关于使用window.postMessage进行iframe跨域数据通信的主要内容,如果未能解决你的问题,请参考以下文章

使用 window.postMessage 发送敏感数据是不是安全?

HTML5中window.postMessage,在两个页面之间的数据传递

在 Swift WKWebView 中捕获 window.postMessage

使用window.postMessage()方法跨域通信

使用window.postMessage()方法跨域通信

使用window.postMessage()方法跨域通信