问题背景:
首先应该看子系统是否已按照架构正常启动,其次查看主子系统的协议是否一致,是否使用了https协议,最后再根据一下几种情况具体分析处理
DOMException: Blocked a frame with origin from accessing a cross-origin frame 报错
可能原因: 子应用的沙箱被替换掉了,有三个原因:
- 子应用运行在一个空白的、
src
为主应用host
的iframe
中,这个host
地址会发生 302 之类的跳转导致沙箱被弄掉了 - 子应用为
vite
应用,修改了window.location.href
导致沙箱被替换掉了 - 子应用添加了 jsIgnores 的
plugin
,对应的js
文件修改了window.location.href
解决方案:
- 主应用提供一个路径比如说
https://host/empty
,这个路径返回不包含任何内容也不会跳转,子应用设置 attr 为{src:'https://host/empty'}
,这样iframe
的src
就是https://host/empty
-
vite
子应用所有的location
操作都必须采用window.$wujie.location
-
jsIgnores
对应的js
文件所有的location
操作都必须采用window.$wujie.location