项目中,在做门户系统时,使用了iframe嵌套展示各个子系统的页面,其中有个页面在ie8下,始终无法正常登陆。
后来项目经理分析,应该是iframe跨域导致,赶忙查看了连接地址,还真是一个跨域的页面。
于是想到了p3p方案(网上查到了一些设置):
只需要设置 P3P HTTP Header,在隐含 iframe 里面跨域设置 cookie 就可以成功。
(‘在隐含 iframe 里面’这里应该指的是iframe的src那个页面吧,不过我是在主页面和嵌套页面都设置了,有机会再确认下)
ASP直接在头部加了头部申明,测试有效。
<%Response.AddHeader "P3P", "CP=CAO PSA OUR"%>
PHP的话,应该是如下写法:
header('P3P: CP=CAO PSA OUR');
ASP.NET的话
通过在代码上加Response.AddHeader("P3P", "CP=CAO PSA OUR")或者在Window服务中将ASP.NET State Service 启动。
JSP:
response.setHeader("P3P","CP=CAO PSA OUR");
我的jsp设置片段:
<%@ page contentType="text/html; charset=utf-8" isELIgnored="false"%> <% String path = request.getContextPath(); response.setHeader("P3P","CP=CAO PSA OUR"); %> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head>
... ...