IE下嵌入iframe跨域获取session问题.
做一个单点登陆的页面, 自动登陆另一个域地址下的网站. 方法: 在当前页面嵌入iframe, 用javascript模拟自动登陆:
<html>
<head></head>
<body>
<form name="frm" action="http://1.1.1.1/system/login.do" method="post">
<input type="text" name="userName" value="username">
<input type="password" name="password" value="password">
</form>
<script language="JavaScript" type="text/JavaScript">
function submitFrm() {
document.frm.submit();
}
submitFrm();
</script>
</body>
</html>
以上代码在Chrome下通过, 但是在IE下不行, 无法获取到session.
网上查了一下, 原因和浏览器权限有关, 详细的不说了,可以去了解一下P3P的相关作用.
改进:
STEP 1 : 在被嵌入系统的登陆页, 添加P3P设置 , 设置方法
STEP 2: 修改页面针对IE处理: 嵌入页中, 再添加一个iframe来引用刚才设置了P3P的JSP页面.
<form name="frm" action="http://1.1.1.1/system/login.do" method="post">
<input type="text" name="userName" value="username">
<input type="password" name="password" value="password">
</form>
<script language="JavaScript" type="text/JavaScript">
function submitFrm() {
document.frm.submit();
}
var iframe = document.createElement("iframe");
iframe.src = "http://1.1.1.1/system/login.jsp";
if (iframe.attachEvent){ // IE
iframe.attachEvent("onload", function(){
submitFrm();
});
document.body.appendChild(iframe);
} else {
submitFrm();
}
</script>