[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 !