IE浏览器跨应用访问失败问题

由于项目需求,需要实现两个应用间的页面嵌套调用(主要是iframe嵌套)。嵌套访问的场景需求,博主在被调页面做了免登陆处理。本机测试ok,但是考虑到不同应用分机部署的场景,所以找了同事做分机调用处理。(这里说明博主平时用的而是Chrome做调试,所以并没有发现任何问题。)

分机测试时,嵌套页面总是报错。错误也非常奇葩,直接是被嵌入页面的js被自己应用的登录页的jsp内容重写,博主开始一直以为自己免登陆对应的拦截器的代码敲错了。最后进行多种尝试之后发觉仅仅只有IE浏览器才会报类似的错误(主要是同事用的是IE,所以才发现的问题)。

最后才得出是session/cookie的影响,这里解释下:第一方session/cookie指的是访客当前访问的网站给访客的浏览器设置的seesion/cookie, 会被存储在访客的计算机上。第三方session/cookie指的是当前访问的网站中会加载(嵌入)另外第三方的网站代码,例如促销广告,那么第三方网站也会在访客的计算机上添加session/cookie,这种就是第三方session/cookie。

随着IE版本的不断更新,版本之间变化很大,其兼容性问题困扰着许多开发者。本问题也不例外,IE7以后,微软逐渐改进了IE安全性,其中默认设置下第三方session/cookie是不允许使用的,这就造成了使用iframe嵌入式访问另外的第三方网站时,不能为其保存会话状态,无法进行登录或跨越取值,从而影响第三方网站功能的使用。

处理方法:代码中使用P3P协议自动更改IE浏览器安全级别,P3P(Platform for Privacy Preferences)是一种可以提供这种个人隐私保护策略。具体做法是在被iframe嵌入的第三方网站代码中加入如下代码:

HttpServletResponse res = (HttpServletResponse) response;
res.setHeader("P3P","CP=\"CAO PSA OUR\"");//兼容IE安全性问题,使界面第三方session和cookie可以正常使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值