IE 11 window.postMessage 跨域通信

近期有演示项目遇到需要在 IE 11 上使用 window.postMessage 方法在不同窗口间进行通信的功能,而不同窗口中的内容又是位于不同域下的(即跨域跨文档通信),因此在默认的安全规则下,IE 11 是禁止此行为的。

通过设置 IE 11 的默认安全规则,上述功能将可以正常使用,如下是设置步骤和注意事项,供参考。

Step 1、将内容的域添加到受信任的站点中

首先,我们打开“Internet 选项”,在“安全”选项卡页,选择“受信任的站点”,然后点击“站点(S)”按钮,在弹出的窗口中,将需要使用 window.postMessage 发送信息以及接受信息的页面所处的域,均加入至受信任的站点区域内,若域没有开启 HTTPS,将下方“对该区域中的所有站点要求服务器验证(https:)(S)”复选框取消勾选。

这样,参与 window.postMessage 行为的各域均已成为受信任的站点。

Step 2、设置受信任区域的安全级别

接下来,对“受信任的站点”区域的安全级别进行设置。

先将“该区域的安全级别(L)”拉到最低级别,这样大部分特性即已启用。

然后点击“自定义级别(C)…”,分别开启如下特性,并“确定”。

1、跨域浏览窗口和框架

2、通过域访问数据源

3、显示混合内容

4、允许脚本启动的窗口,不受大小或位置限制

5、允许网页上的活动内容使用限制的协议

6、允许在不同窗口中的域之间拖动内容

7、允许在同一窗口中的域之间拖动内容

8、在 IFRAME 中加载程序和文件

End

至此,安全规则已经设置完毕,在“受信任的站点”区域内的所有内容均可以使用 window.postMessage 来进行跨域跨文档通信,Cheer~

发表评论

电子邮件地址不会被公开。 必填项已用*标注