iframe 跨域

背景:前端微服务,框架里iframe访问子项目;子项目iframe要跳回父级登陆页。

试验一:在子项目使用window.open()

window.open('url','_top'),第二个参数“_top”是跳入上一级; 

但是呢,登陆信息存在了localStorage里,直接跳转还是会登陆进来的;

然后加一行代码:window.parent.localStorage.clear(); 结果控制台报错了 Cross-domain;因为子项目在另外一台服务器;

试验二:form 标签

form,taget="_parent" (如果整个窗口提交就用_top);

然后跳到一个空白页面,

然后在空白页面进行window.close()的处理。

当然,这个空白页面也是跟子画面同域的。

但是:windwo.close()已经是失效的方法了;另一个是浏览器会退的话,还是能进入系统的;

 

两次曲线救国都失败了,只能走直线了,联系父级项目修改程序,接受子级信息,清除localStorage了。

解决方法:

子项目发送消息,window.parent.postMessage('layout','*'); 

父级监听消息清除localStorage,跳到登陆界面;

posted @ 2023-01-15 11:30  安博主  阅读(166)  评论(0编辑  收藏  举报