cas ajax登录方式跨域时session丢失问题解决

问题:在ie浏览器下,域名A通过iframe的方式把登录信息post到域名为B的cas服务器上,经过debug发现A获取loginTicket时的sessionId和post过去时的sessionid不一致。只有ie浏览器有这个问题,火狐谷歌浏览器正常。

原因:查资料知道IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,火狐和谷歌目前还不支持P3P安全特性,所以它们不存在此问题了。

解决方法:在第一次获取loginTicket时在response中设置p3p声明,如下:

response.setHeader("P3P", "CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC

相关推荐