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>
网上查了一下, 原因和浏览器权限有关, 详细的不说了,可以去了解一下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>