一切福田,不離方寸,從心而覓,感無不通。

8aca0bfcd6eeef399b5a0f43ac064fe0

解决postMessage跨域问题

在HTML5中新增了postMessage方法,postMessage可以实现跨文档消息传输(Cross Document Messaging),Internet Explorer 8, Firefox 3, Opera 9, Chrome 3和 Safari 4都支持postMessage。

该方法可以通过绑定window的message事件来监听发送跨文档消息传输内容。

 

1. postMessage是HTML5 XMLHttpRequest Level 2中的API,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题:

a.) 页面和其打开的新窗口的数据传递
b.) 多窗口之间消息传递
c.) 页面与嵌套的iframe消息传递
d.) 上面三个场景的跨域数据传递

2. postMessage用法:

参数说明:

data: html5规范支持任意基本类型或可复制的对象,但部分浏览器只支持字符串,所以传参时最好用JSON.stringify()序列化。
origin: 协议+主机+端口号,也可以设置为"*",表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。

 

举例说明:

两个页面之间进行数据传输,postMessage示例:

我启动了两个ip地址来代表不同域名,页面t_hotnotes_list.html插入如下代码

页面search_role.html插入如下代码:

当两个服务启动之后,我们在浏览器中打开页面t_hotnotes_list.html

得到如下图结果,t_hotnotes_list.html得到两个页面的数据

 

 

from:https://www.cnblogs.com/yyy6/p/9481671.html