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,跳到登陆界面;