2

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

--

编辑:

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

4

1 回答 1

2

我想这样做的一种方法是在另一个域(不是子域,根据定义,但我没有测试过)上有一个脚本,它只是设置一个 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
       }
    })

演示。在 Mac 上的 Safari 上进行了测试。

于 2014-05-29T01:34:48.757 回答