Monthly Archives: 九月 2012

Safari在使用iframe时,cookie无法生成,解决方法

因需要,需要跨域cookie支持,IE6\7通过声明方式解决了,但是在safari上遇到了问题。经查测试,可以这样处理

a.com/a.html 代码

<iframe id="iframeB" style="height: 100px;" name="iframeB" 
src="http://b.com/b.php" frameborder="0" scrolling="no" width="100%"
 height="auto"></iframe>

b.com/b.php

//判断是否为Safari浏览器,以及cookie是否存在$vid为需设置为cookie的变量
if(strpos($_SERVER["HTTP_USER_AGENT"],'Safari') and !$_COOKIE["userid"]) {
echo "<script language='javascript'>";
echo "top.location.href='http://b.com/b.php?tbid=".$vid."';";
//完全跳转出去iframe,到b.com/b.php上
echo "</script>";
die;
}
//接收操作
if($_GET["tbid"]){
setcookie("userid",$_GET["tbid"],time()+60*60*5,"/","");//产生cookie
echo "<script language='javascript'>";
echo "top.location.href='http://a.com/a.html';";//跳转回到a.com/a.html 
echo "</script>";
die;
}

此方法最简单,不过需要额外的地址跳转,鉴于Safari的用户很少,虽然体验不完美,但总比抛弃他们好的多。

—————————————————————————————————————–

另外转载一下正常的解决方法:[……]

Read more