window.showModalDialog() 后 window.open() 导致cookie丢失问题(认证失效) Authentication
当你的页面认证采用基于Cookie的方式,例如form,windows集成认证时,如下操作后有时认证失效,Authentication (用户验证信息)丢失,需要再次登录
系统正常登录后:
第一个页面(PageA.htm):window.showModalDialog()后,弹出第二个页面(PageB.htm)
第二个页面(PageB.htm):window.open()后,弹出的窗口(PageC.htm)有时会跳转到登录页面
这应该是由于不同的页面存在于不同的进程,导致了身份信息不同步,发生了认证失效,然而这是有一定概率发生的,经过MS顾问的帮忙,终于找到了方法:
概括讲就是,在showModalDialog()时,将window作为对象参数传入PageB.htm,在PageB中,用这个参数去open(),这样问题就解决了
具体如下:
-----------PageA.htm--------------
...
var obj = new Object();
obj.myTestWindowA = window;//将这个window存入对象参数中
window.showModalDialog("PageB.htm",obj,"");
...
----------------------------------
-----------PageB.htm--------------
...
var obj = window.dialogArguments;//获取上个页面的参数
obj.myTestWindowA.open("PageC.htm");//用上个页面传过来的参数打开下一个页面
...
----------------------------------
经测试,没有再出现身份丢失现象,大功告成了!
细心的朋友会发现,这样的操作会导致,在PageC.htm中由于opener不是PageB.htm而是PageA.htm了,所以无法用window.opener与PageB.htm进行通信,而open()又无法传递对象参数,慌了!
不过幸好在javascript中,对象是一颗大树,你可以在它的枝杈上挂任何东西,所以,我们为了PageC.htm能与PageB.htm通信,对PageB.htm改造 如下:
-----------PageB.htm--------------
...
var obj = window.dialogArguments;//获取上个页面的参数
var obj.myTestWindowA.myTestWindowB = new Object();
obj.myTestWindowA.myTestWindowB = window;//将PageB的window挂在PageA的window枝干下
obj.myTestWindowA.open("PageC.htm");//用上个页面传过来的参数打开下一个页面
...
----------------------------------
如此,便可在PageC中,通过window.opener.myTestWindowB来与PageB页面的对象通信,例如window.opener.myTestWindowB.document.getElementById("TextBox1").value="OK"
注:
1.这也许只是一种情况,可能先open再showModalDialog也有可能导致身份信息丢失,但大家只要传那个没有问题的window到下一页面,问题就能迎刃而解。
(丢失情况请参见http://www.ourac.net/read.php?tid=45123&fpage=2)
2.也有可能在Session时发生,请参见http://support.microsoft.com/default.aspx?scid=kb;EN-US;196383
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/capcom923/archive/2009/06/03/4240343.aspx
分享到:
相关推荐
然而,有时在特定的操作序列下,如在使用`window.showModalDialog()`和`window.open()`函数后,可能会遇到Cookie丢失或认证失效的问题,导致用户需要重新登录。这种情况通常发生在不同的页面存在于不同的进程中,...
毕业论文- 深蓝健身房瑜伽馆行业小程序V4.15.0 前端+后端-整站商业源码.zip
36氪:2019中国开放式创新观察.pdf
毕业论文-化妆品商城-整站商业源码.zip
毕业论文-MNews2.4-整站商业源码.zip
X-AnyLabeling自动标注模型
【鼎软天下】科技赋能物流,数字驱动变革.pdf
实训商业源码-王中王掌上游戏机网页源码,怀旧小游戏-毕业设计.zip
内容概要:本文提出了一种基于强化学习(RL)的前向纠错(FEC)调整方法——R-FEC,旨在优化WebRTC视频会议中的用户体验质量(QoE)。传统方法在确定适当的FEC比例时面临挑战,因为过高的FEC会增加延迟并降低视频质量,而过低则无法有效应对丢包。R-FEC通过RL算法动态调整视频和FEC比特率,在不同的网络条件下最大化QoE,同时最小化网络拥塞。实验表明,R-FEC相比现有最佳解决方案可提高视频速率达27%,并改善视频质量6dB。 适合人群:对视频会议系统优化、网络通信协议、机器学习特别是强化学习有兴趣的研究人员和技术人员。 使用场景及目标:①需要在视频会议中实现实时通信的应用开发者;②希望提升视频通话质量、减少延迟的技术团队;③研究如何在动态网络环境中优化数据传输的研究机构。 其他说明:R-FEC不仅解决了现有方法中FEC设置不合理的问题,还展示了在实际网络环境下显著优于其他方法的表现。此外,作者指出未来工作将扩展到多方通话场景,并考虑更多复杂的网络条件。该研究得到了Cisco Systems和韩国国家研究基金会的支持。
内容概要:本文介绍了流量整形(Traffic Shaping)与增强传输选择(Enhanced Transmission Selection, ETS)技术在多虚拟函数(VFs)共享单个物理网络接口控制器(NIC)端口情况下的应用。流量整形通过对数据发送速率进行限制来管理网络流量,确保节点不会超过设定的最大带宽,同时保证最小带宽。ETS是IEEE 802.1Qaz标准的一部分,旨在数据中心桥接环境中为不同类型的流量分配带宽。文章详细描述了在多VF组中实现每类流量带宽保证的技术挑战和解决方案,包括使用令牌桶算法、加权循环调度(DWRR)、多队列优先级(MQPRIO)以及信任模式(Trust Mode)进行流量分类。此外,还探讨了如何通过扩展devlink-rate工具指定每个流量类别的带宽比例。 适合人群:网络工程师、系统管理员、云服务提供商以及对网络流量管理和优化感兴趣的IT专业人员。 使用场景及目标:①理解流量整形的基本概念及其在网络通信中的作用;②掌握如何配置虚拟功能(VF)以实现对特定流量类别的带宽控制;③学习如何利用ETS机制确保关键业务获得足够的网络资源;④了解最新的devlink-rate扩展功能及其在实际部署中的应用。 其他说明:本文基于Netdev 0x19会议上的演讲整理而成,提供了从背景介绍到具体实施步骤的全面讲解,并附有详细的参考资料链接供进一步研究。
实训商业源码-自适应极简多引擎搜索源码-毕业设计.zip
该源码库为LilyGo T_QT开发板量身定制,专注于物联网通信功能,包含1792个文件,涵盖512个头文件、448个C语言源文件、213个Arduino脚本文件、151个Python脚本、139个Markdown文档、63个PNG图片文件、55个reStructuredText文件、38个Vera Lite Widget文件、18个文本文件、18个C++源文件。语言多样,支持C、C++、Python、C++、Shell、HTML、CSS和Ruby。库内容丰富,是进行物联网通信开发不可或缺的资源。
学生心理健康服务平台是一个集心理咨询、心理测评、资源共享和社区互动于一体的综合服务平台,包含Web/移动端应用和管理后台两部分。该项目旨在为高校学生提供便捷、专业的心理健康服务,帮助学生缓解心理压力,促进心理健康发展。
毕业论文-二次元应用下载页源码 带弹幕-整站商业源码.zip
实训商业源码-影视资源站源码 电脑+手机模板-毕业设计.zip
Baidunetdisk_AndroidPhone_1023843j (6).apk
《Creo Simulation Live》数据表.pdf
实训商业源码-源授权V1.5-毕业设计.zip
实训商业源码-微信淘宝客5.99.78 加密-毕业设计.zip
毕业论文-红包拓客生意宝 2.0.2-整站商业源码.zip