Tomcat、JAVA、Iframe、P3P跨域
来源:互联网 发布:linux修改root密码命令 编辑:程序博客网 时间:2024/06/02 01:10
转自:http://howe.im/编程/tomcat、java、iframe、p3p跨域.html
项目使用iframe来组织页面内容,之前因为虽然业务发布在不同的服务,但是也都是一个大域名的不同子域名,最近新增了一个外部的域名就出现了SSO登录总是提示不成功退出。
解决的过程:
1. 首先是确定只有IE下有问题,Chrome下完全正常,就把精力从代码逻辑转移到浏览器兼容上来
2.发现只要是使用ie右键新窗口打开页面,就可以成功的SSO,直接点击在iframe中则必然失败,怀疑到iframe上
3. 输出SessionID发现有多个不同的SessionID,搜“iframe Session不一致”发现很多提到跨域的SSO遇到此类问题,解决方案为增加P3P头
4. 直接在一个测试的JSP页面里增加P3P测试后无效,用 http://www.w3.org/P3P/validator.html http://www.w3.org/P3P/ 检测发现页面并没有输出P3P
5. 增加过滤器为页面设置P3P,测试,通过
以下为过滤器代码:
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class TransNameFilter extends HttpServlet implements Filter{
private static Log logWriter = LogFactory.getLog(TransNameFilter.class.getName());
public void init(FilterConfig arg0) throws ServletException{}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)throws IOException, ServletException{
HttpServletRequest hreq = (HttpServletRequest)request;
String transName = hreq.getParameter(“transName”);
HttpServletResponse res = (HttpServletResponse)response;
res.setHeader(“P3P”, “CP=CAO PSA OUR”);
if (chain != null)
chain.doFilter(request, response);
}
public void destroy(){}
}
- Tomcat、JAVA、Iframe、P3P跨域
- 跨域IFrame session失效问题 P3P解决方案
- java Web 开发 IE 中 IFRAME 跨域 session 失效 p3p 解决
- java P3P header解决iframe跨域访问cookie
- IE iframe cookie问题(p3p)
- IE iframe cookie问题(p3p)
- p3p 跨域
- p3p 跨域
- P3P实现iframe中跨域传递COOKIE
- 使用p3p解决iframe中跨域传递cookie
- P3P 跨域cookie设置
- P3P解决cookie跨域
- P3P
- P3P
- p3p
- P3P
- 用P3P header解决iframe跨域访问cookie
- 用P3P header解决iframe跨域访问cookie/session
- Keil C开发介绍
- iOS (objective-c) 中的多线程互斥同步问题
- JQuery 在DIV中加载页面
- Eclipse中Tab设置为4个空格
- Android背后的恶意应用,您应该知道的事
- Tomcat、JAVA、Iframe、P3P跨域
- MS SQL数据导入MySQL
- AT编程常见问题
- 你的赋值操作符能正确地将对象赋给对象本身吗?
- .NET技术与Ajax技术结合的四种方式
- 累
- JOGL in Eclipse
- jquery ajax表单提交插件
- Linux启动或禁止SSH用户及IP的登录