IE中iframe跨域丢失Session问题 p3p
关键字: session 丢失 p3p
整合客户的登录时,或者其他一个网站通过iframe时,特别是一个http页面,访问一个https页面时,常常会session失效!
1、由于IE的安全限制,将父面所在域加入信任站点就OK了!
2、当“父”页面是https的,通过iframe去访问https页面时,
<iframe name="loginFrame" id="loginFrame" frameborder=NO scrolling=NO src="" class="iframeBody" ></iframe>
会报“有不安全的信息”
办法是: src="/" 就OK!
3、当客户设置了1时,还是不行时,怎么办呢?又查询了一些网上的资料!
IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存在此问题了。
在frameset里面,也就是里面的frame是来自第三方站点(不同IP或不同域名),那么默认情况下IE会自动禁用这些站点的cookie,也就是在请求某url时在HTTP header里不发送它们的cookie,包括session的cookie。注意,这些站点在response里面设置的cookie还是会被发送到浏览器的。
在用户浏览a.php时 A.com写入的为第一方Cookie,其嵌入的iframe指向b.php.这时B.com写入的就为第三方Cookie了,所以它是被IE当在了大门外。 所以,每次当用户提交的cookie提交时,就挂掉了.因为传不到真实的服务器.
解决方案.
PHP的程序
可以直接在B网站中写入www.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
<?phpwww.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"')www.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
?>www.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
这样就能接受第三方的Cookie啦。
lighttpd的服务器
server.modules = ("mod_setenv")
setenv.add-response-header = ( "P3P" => "CP='CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR'")
apache的服务器
<VirtualHost>
Header set P3P 'CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"'
</VirtualHost>
IIS的服务器www.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
增加一个网站http头来解决问题;www.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
管理工具——〉选择一个网站——〉属性——〉http头,增加一个http头www.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
然后输入头名:P3Pwww.kobsky.cn 小眼世界ýñ ëÕRÏz-Z
输入头内容:CP=CAO PSA OUR
jsp页面:
<%
response.setHeader("P3P","CP=CAO PSA OUR");
%>
java代码最简单的办法,增加一个filte:
public class TransNameFilter extends HttpServlet implements Filter {
private static org.apache.commons.logging.Log logWriter =
LogFactory.getLog(TransNameFilter.class.getName());
/**
*
*/
public TransNameFilter() {
super();
}
/* (非 Javadoc)
* @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
*/
public void init(FilterConfig arg0) throws ServletException {
}
/* (非 Javadoc)
* @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest hreq = (HttpServletRequest) request;
String transName = hreq.getParameter("transName");
if (Util.isNullOrEmpty(transName)) {
logWriter.fatal(" there is no transName for this request");
} else {
logWriter.info(" transName is " + transName);
}
HttpServletResponse res = (HttpServletResponse) response;
//iframe引起的内部cookie丢失
res.setHeader("P3P","CP=CAO PSA OUR");
if (chain != null)
chain.doFilter(request, response);
}
/* (非 Javadoc)
* @see javax.servlet.Filter#destroy()
*/
public void destroy() {
}
}
原文URL:http://wwww.iteye.com/blog/420145
分享到:
相关推荐
标题 "JavaEye博客文章——深入理解HTTP你的游戏" 这篇博客文章是关于深入理解HTTP协议的,作者通过"你的游戏"这个实例,详细讲解了HTTP在实际应用中的运作机制,特别是对于游戏开发而言的重要知识点。HTTP(超文本...
-- 配置集群的时候,要用到,在这篇文章:“apache+tomcat集群、负载均衡及session复制”里的第三条(http://jiajun.javaeye.com/admin/blogs/278586) --> <distributable/> <!-- context-param 元素用来设定...
网址:http://www.javaeye.com/ JavaEye曾是中国最大的Java技术社区之一,虽然目前可能已不活跃,但其存档的大量技术文章和讨论仍具有很高的参考价值。对于希望了解过去Java技术趋势和发展历史的开发者来说,这是一...
http://peterwei.javaeye.com/blog/968815 Ubuntu10下JDK1.6安装 http://peterwei.javaeye.com/blog/968758 Ubuntu10下Tomcat7安装 http://peterwei.javaeye.com/blog/968774 Ubuntu10下Eclipse3.6安装 ...
3. **Hadoop部署与升级**:`http://www.slideshare.net/steve_l/dynamic-hadoop-clusters`, `http://zkl-1987.javaeye.com/blog/365172`, `http://www.javaeye.com/topic/365172` - 提供了Hadoop集群部署的最佳实践...
Flex + Hessian 学习笔记(一) http://wangcheng.javaeye.com/blog/141382 Flex + Hessian 学习笔记(二) http://wangcheng.javaeye.com/blog/141539 Flex + Hessian 学习笔记(三) ...
无论是个人还是团队,只要翻译了Android官方的相关文档,都可以通过发送邮件的方式(over140@gmail.com)分享进度,以避免重复翻译的工作。同时,翻译组也会定期更新进度列表,方便大家了解整体进展。 #### 五、...
- Maven的中文手册可参考[http://www.juvenxu.com/mvn-def-guide/](http://www.juvenxu.com/mvn-def-guide/)和[http://juvenshun.javaeye.com/5](http://juvenshun.javaeye.com/5)。 **5. Maven项目导入Eclipse** ...
- 1.1 final 版: [http://fins.javaeye.com/blog/54265](http://fins.javaeye.com/blog/54265) - 1.1 RC1 版: [http://fins.javaeye.com/blog/51068](http://fins.javaeye.com/blog/51068) - 1.0 RC1 版: ...
http://comsci.javaeye.com/ JWFD工作流设计器(带引擎算法)的源代码包, 实在不好意思,这个包的资源文件缺失了,导致编译时报错,经过反馈, 修改了这个问题,在资源中新增加下载,本下载停止使用,非常抱歉 请...
3. **JavaEye论坛(http://www.javaeye.com/forums/tag/Android)**:虽然JavaEye论坛已经关闭,但其存档的Android相关帖子仍然具有很高的参考价值。 4. **Android123论坛...
- **JavaEye**(http://www.javaeye.com/): 早期的Java技术社区,虽然现在已不活跃,但曾经是中国最大的Java开发者聚集地之一。 - **ITEER**(http://www.iteer.net/): 覆盖了IT行业的多个方面的综合技术社区。 - ...
在Struts中应用标签的数据库分页示例(dbpage.jsp),打开方法: ...打开方法: http://localhost:8080/pagertaglib/test1.jsp<br><br><br><br>制作示例参考了: ...
1. **参考网文**:《Flex基础教程》[http://jackweijie.javaeye.com/blog/191452](http://jackweijie.javaeye.com/blog/191452) - 这篇文章详细介绍了Flex的基础知识,包括安装配置环境、基本概念、语法结构等内容...