A Page
b.com/index.phpB Page
IE iframe 跨域访问session问题解决了,但测试后发现,即使加入了P3P,safari浏览器依然不能保存iframe页面中的session。原来safari的安全策略是,当cookie并未以第一方cookie保存过的(非iframe),将判断为不安全而直接拒绝。因此与IE的P3P有些不同。解决方法如下:首先在iframe的页面中判断某个session值是否存在。如果不存在,使用js修改window.top.location跳到一个本域的setSession.php页面。因为是用window.top.location打开,因此并非iframe去访问,且能以第一方cookie保存.然后在setSession.php页面执行完set session后,会跳回A域名的页面。之后就能使用session而不失效了。代码如下:a.com/index.phpA Page
b.com/index.php window.top.location="http://b.com/setSession.php"; '; exit(); } } $_SESSION['code'] = md5(microtime(true)); ?>B Page
b.com/setSession.php源码下载地址:点击查看