检查Safari是否阻止“来自第三方和广告商”的cookie;使用javascript/php启用

Check if Safari block cookies "From third parties and advertisers" is enabled using javascript/php

本文关键字:cookie 使用 javascript 启用 php 广告商 是否 Safari 第三方 检查      更新时间:2023-09-26

我面临的问题是,在我的网站支付网关(migs)使用iframe,在Safari浏览器默认的cookie块是"来自第三方和广告商",所以得到错误"cookie未启用错误"从网关(migs)的响应。我需要检测这样的cookie块使用php/javascript显示此cookie块问题。

,

编辑:

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

我想这样做的一种方法是有一个脚本在另一个域(不是子域,根据定义,但我还没有测试过这个),简单地设置一个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) . ")";
Jquery Javascript/

//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上测试过了