san*_*hez 18 javascript safari facebook actionscript-3 local-shared-object
默认情况下,Mac上的Safari Block cookies设置为From third parties and advertisers.
如果嵌入的swf来自不同的域,它会阻止SharedObject工作.
这个问题并不新鲜: Safari第三方cookie iframe技巧不再有效?
有没有人找到解决方案(除了在每个请求中通过GET/POST参数传递会话ID)?
注意:我无法访问嵌入swf的网站,因此无法更改HTML或放置任何JavaScript等.
san*_*hez 12
function setCookie(){
if ( navigator.userAgent.indexOf('Safari') != -1 &&
navigator.userAgent.indexOf('Chrome') == -1 ){
window.open('safari.php','','width=200,height=100' );
}
}
// then we set the cookie in safari.php
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.reizbombardement.de/archives/safari-5-1-4-enforces-cookie-policy
// 2013年7月23日更新
修复此问题的这种糟糕的方法曾经工作到Safari 6.
请参阅下面的@Fabio Antunes和@ncubica评论.
// 2013年7月23日由Fabio Antunes更新
这是我的代码
在目标网页上,我们将简要介绍该应用,并提供一个类似"输入"的按钮.我正在使用jquery来简化这个过程,为click事件创建一个监听器,我只是放了javascript代码,因为我假设你已经拥有了登陆页面的其余html代码:
$(document).on("click", "#bt-landing", function(){
var left = (screen.width/2)-(500/2);
var top = (screen.height/2)-(250/2);
window.open('URL_FOR_THE_PHP_THAT_WILL_CREATE_THE_SESSION', '_blank', 'width=500,height=250,toolbar=0,location=0,menubar=0, top='+top+', left='+left);
});
Run Code Online (Sandbox Code Playgroud)
这将打开一个小窗口,以500 x 250像素为中心,以屏幕为中心.
我对小窗口的代码如下:
<?php setcookie("safari_cookie", "1");?>
<html>
<head>
<meta charset="utf-8">
<title>THE NAME OF YOUR APP OR SOMETHING THAT THE USER WE'LL READ AND ASSUME THAT THIS SMALL WINDOW IS RELIABLE</title>
</head>
<body>
<script type="text/javascript">
$(document).ready(function(){
setTimeout(function(){window.close()},1000);
})
</script>
</body>
</html
Run Code Online (Sandbox Code Playgroud)
rca*_*brj 10
Safari 仍会阻止来自顶部窗口中未访问过的域的cookie.
为了解决这个问题,我们在PHP中计算($ _ COOKIES)并将浏览器指向我们域上的页面,该页面的工作就是将浏览器发送回原来的位置.这是一个肮脏的技巧,这意味着一些用户将不必要地被移走,然后回来,但随后,网络充满了肮脏的技巧.
如果您无法top.location.href在域上设置需要设置cookie的页面,或者您无法更改所述域上的页面,那么我可以自信地说您需要使用基于URL的会话.
但是,另一个选项(仍然需要能够在域上创建页面)是请求用户单击您的SWF,然后您可以触发window.open并让URL指向您创建的页面.它需要做的就是成功加载,然后用户(甚至弹出页面本身的JS)可以关闭弹出窗口.然后,您可以设置cookie.
我开发的Facebook应用程序存在于iframe中,这就遇到了这个问题.每个应用程序都必须附带此修复程序.
| 归档时间: |
|
| 查看次数: |
19404 次 |
| 最近记录: |