欢迎来到天天文库
浏览记录
ID:2074320
大小:123.84 KB
页数:4页
时间:2017-11-14
《关于门户待办刷新跨域问题的处理方案》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、关于门户待办刷新跨域问题的处理问题描述门户系统提供统一待办处理接口实现了与业务系统的待办信息的统一集成、集中展示。为保证待办任务处理完毕后能够及时的从门户的待办信息展现区域消失,各应用系统需要在待办的处理界面添加刷新门户待办事宜展现区域的JavaScript代码。代码如下所示:functionreloadParent(){if(typeof(top.opener.Onload)!='undefined'&&!top.opener.closed){top.opener.Onload();}}在各业务系统与统一身份认证
2、系统实现单点登录集成后,每个业务系统的单点登录的域名是各异的,由于系统之间存在跨域问题导致业务系统待办处理完成后,通过JS不能刷新门户的待办展示列表,从而导致门户待办处理后不能自动消失,降低了用户体验。解决方案门户系统通过监控用户本地Cookie的方法,实现门户待办的及时刷新,从而保证门户待办处理完成后自动消失。实现原理如下图所示:1、用户登录门户本地浏览器生成cookie,cookie状态值默认为空。2、Cookies监视程序定时对cookie状态值进行监控。3、用户通过门户打开业务系统的待办处理页面进行待办办理
3、,办理完成后将cookie状态值置为0。(详见示例)4、Cookies监视程序监控到cookie状态值为0时,对门户待办页面进行刷新。代码示例门户cookies监控程序代码门户cookies监控程序如下://4、5、24)*60*60*1000);document.cooki6、e=n+"="+escape(v)+";expires="+exp.toGMTString()+';path=/;domain=.hq.avic.com';}cookie.get=function(n){vararr=document.cookie.match(newRegExp("(^7、)"+n+"=([^;]*)(;8、$)"));if(arr!=null)returnunescape(arr[2]);returnnull;}//]]>functiongetTime(){if(cookie.get('test')9、=='0'){调用门户代办页面刷新方法:cookie.set('test',"1");}}页面初始化调用functiononload(){setInterval("getTime()",4000);}注:在门户待办刷新时间间隔初始设置为4秒,可根据实际情况或者需求修改任意。业务系统修改cookie状态值代码示例1、Javascript实现方法示例在办理待办的页面加入如下方法。functionsetCookie(name,value,days){varexpire=newDate();expire.10、setTime(expire.getTime()+(24*60*60*1000)*days);document.cookie=name+"="+escape(value)+";expires="+expire.toGMTString()+";path=/;domain=.hq.avic.com";}setCookie("test","0",90)参数说明:cookie名称:testcookie状态值:0cookie有效期:90注:domain=.hq.avic.com因为集团门户上接入N个系统,调用各个子系统后产生11、的域名发成变化,但二级域名相同,所以这里指定二级域名,实现cookie跨域调用。以上js方法需要在业务系统的待办处理页面进行调用。使用dorado平台的系统:在dorado的办理按钮成功事件onSuccess里调用写入方法:setCookie("test","0",90);这里设置cookie的名称状态需要根据门户待办取得cookie的名称状态相同。2、Java程序实现方法示例Cookie[]cookies=request.getCookies();if(cookies!=null&&cookies.length>12、0){for(inti=0;i
4、
5、24)*60*60*1000);document.cooki
6、e=n+"="+escape(v)+";expires="+exp.toGMTString()+';path=/;domain=.hq.avic.com';}cookie.get=function(n){vararr=document.cookie.match(newRegExp("(^
7、)"+n+"=([^;]*)(;
8、$)"));if(arr!=null)returnunescape(arr[2]);returnnull;}//]]>functiongetTime(){if(cookie.get('test')
9、=='0'){调用门户代办页面刷新方法:cookie.set('test',"1");}}页面初始化调用functiononload(){setInterval("getTime()",4000);}注:在门户待办刷新时间间隔初始设置为4秒,可根据实际情况或者需求修改任意。业务系统修改cookie状态值代码示例1、Javascript实现方法示例在办理待办的页面加入如下方法。functionsetCookie(name,value,days){varexpire=newDate();expire.
10、setTime(expire.getTime()+(24*60*60*1000)*days);document.cookie=name+"="+escape(value)+";expires="+expire.toGMTString()+";path=/;domain=.hq.avic.com";}setCookie("test","0",90)参数说明:cookie名称:testcookie状态值:0cookie有效期:90注:domain=.hq.avic.com因为集团门户上接入N个系统,调用各个子系统后产生
11、的域名发成变化,但二级域名相同,所以这里指定二级域名,实现cookie跨域调用。以上js方法需要在业务系统的待办处理页面进行调用。使用dorado平台的系统:在dorado的办理按钮成功事件onSuccess里调用写入方法:setCookie("test","0",90);这里设置cookie的名称状态需要根据门户待办取得cookie的名称状态相同。2、Java程序实现方法示例Cookie[]cookies=request.getCookies();if(cookies!=null&&cookies.length>
12、0){for(inti=0;i
此文档下载收益归作者所有