IE 11 window.postMessage 跨域通信
近期有演示项目遇到需要在 IE 11 上使用 window.postMessage 方法在不同窗口间进行通信的功能,而不同窗口中的内容又是位于不同域下的(即跨域跨文档通信),因此在默认的安全规则下,IE 11 是禁止此行为的。
通过设置 IE 11 的默认安全规则,上述功能将可以正常使用,如下是设置步骤和注意事项,供参考。
Table of Contents
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~
Filed under: 未分类 - @ 2020年5月11日 下午1:50
标签:CORS, IE11, postMessage, 跨域