【问题标题】:Check if Safari block cookies "From third parties and advertisers" is enabled using javascript/php检查是否使用 javascript/php 启用了 Safari 阻止“来自第三方和广告商”的 cookie
【发布时间】:2013-03-10 12:17:37
【问题描述】:

我面临一个问题,在我的网站支付网关(migs)中使用 iframe,在 Safari 浏览器中,默认 cookie 块是“来自第三方和广告商”,因此从网关收到错误“cookie not enabled error”( migs) 响应。我需要使用 php/javascript 检测此类 cookie 块以显示此 cookie 块问题。

--

已编辑:

我面临同样的问题,iOS7 阻止我的 LinkedIn 社交登录按钮工作,因为“阻止来自第三方的 cookie”被禁用。在缺乏解决方案的情况下,我想知道如何检查它们是否启用了 Javascript 或 Javascript+PHP。 @lisovaccaro

【问题讨论】:

标签: javascript cookies safari


【解决方案1】:

我想这样做的一种方法是在另一个域(不是子域,according to definition,但我没有测试过)上有一个脚本,它只是设置一个 cookie,然后脚本可以返回 JSONP,这样你就可以将它与另一个域上的 javascript 一起使用。所以像:

PHP (cookie.php)

<?php
header("Content-type: application/javascript");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

if(isset($_GET["set"])){ //first run here
    setcookie("cookie_test","cookies",time()+3600);
    //redirect to self after setting cookie so we don't have to call script twice
    header('Location: cookies.php?&callback='.@$_GET["callback"]);
    die(); //death
}
//once redirected should go here
$cookie_set=array("cookies"=>isset($_COOKIE["cookie_test"]));
echo @$_GET["callback"]. "(" . json_encode($cookie_set) . ")";

Javascript/Jquery

//callback=? for jquery to know it's jsonp. &set so the script sets first
$.getJSON("http://another.domain.com/cookies.php?callback=?&set")
    .done(function(data){
       if(data.cookies){
          //third party cookies are enabled
       } else {
          //third party cookies probably disabled
       }
    })

Demo。在 Mac 上的 Safari 上进行了测试。

【讨论】:

  • 我真的还没有尝试过,但我明白为什么它应该工作。谢谢
  • @lisovaccaro 谢谢。也不确定你是否看过这个。我通过禁用和再次启用来测试 safari,并且在禁用后,safari 仍然保留了那个 cookie。仔细查看,Safari 有一种奇怪的“阻止第三方 cookie”行为。一旦用户访问该域,显然 safari 将从那时起允许 cookie。这里有一些潜在的解决方法stackoverflow.com/questions/9930671/…
  • 谢谢。我已经能够在 iOS7 中解决它,但它有点过头了,所以我最终为所有设备禁用了它。我可能会使用此代码,因此我要求 iOS 用户启用第三方 cookie。
猜你喜欢
  • 2011-04-02
  • 2012-02-06
  • 2021-05-21
  • 2014-04-21
  • 2021-01-10
  • 2011-05-26
  • 2011-10-03
  • 2011-02-03
  • 1970-01-01
相关资源
最近更新 更多