[b][size=large]问题背景[/size][/b]:
我在A应用的index.jsp中有一个iframe。该iframe的src指向了B应用下的某个功能URL。(PS:A/B应用已实施了SSO单点登录方案)在FireFox和Chrome浏览器下访问不会存在任何问题,但是在IE下便会出现单点登录B应用失败的问题,即iframe无法正常展现B应用的功能页面。
[b][size=large]问题分析[/size][/b]:
究其原因,就是IE下iframe把session丢失了。[b][color=red]问题根源在于:IE支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie[/color][/b],Firefox和Chrome目前还不支持P3P安全特性,自然也不存在此问题了。
[b][size=large]解决方案[/size][/b]:
在B应用下配置一个filter,加入一行代码即可:
[color=indigo]([b]PS : 只有在iframe跨域的情况下才会出现session丢失问题。否则不会出现。[/b])[/color]
That's all !
我在A应用的index.jsp中有一个iframe。该iframe的src指向了B应用下的某个功能URL。(PS:A/B应用已实施了SSO单点登录方案)在FireFox和Chrome浏览器下访问不会存在任何问题,但是在IE下便会出现单点登录B应用失败的问题,即iframe无法正常展现B应用的功能页面。
[b][size=large]问题分析[/size][/b]:
究其原因,就是IE下iframe把session丢失了。[b][color=red]问题根源在于:IE支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie[/color][/b],Firefox和Chrome目前还不支持P3P安全特性,自然也不存在此问题了。
[b][size=large]解决方案[/size][/b]:
在B应用下配置一个filter,加入一行代码即可:
response.addHeader("P3P","CP=CAO PSA OUR");
[color=indigo]([b]PS : 只有在iframe跨域的情况下才会出现session丢失问题。否则不会出现。[/b])[/color]
That's all !
本文探讨了在IE浏览器中使用iframe加载另一个应用页面时出现的单点登录失败问题。原因是IE默认阻止了第三方无隐私声明的cookie。解决方法是在目标应用中添加P3P头部。
4185

被折叠的 条评论
为什么被折叠?



