【问题标题】:facebook client (app) and cookies (new cookie created per url instead of one per domain)facebook 客户端(应用程序)和 cookie(每个 url 创建的新 cookie,而不是每个域一个)
【发布时间】:2015-03-23 23:02:54
【问题描述】:

我有一个网站,如果设置了 cookie,它不应该显示广告,cookie 有效期为 24 小时。在浏览器、移动浏览器等上一切正常,但如果用户从 iOS 上的 Facebook 应用程序(客户端)打开我网站的 url(还不能在 Android 上探测它),cookie 可以工作,但每个 url 都会生成,因此广告会在每个页面首次加载时展示。应该仅在 24 小时内每次首次加载网站时进行。

同样,这只发生在 Facebook 移动应用程序上(据我所知是 iOS)。这是我生成 cookie 的代码。

// Cookie functions

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
    }
}

function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/; domain=.site.com;";
}

function checkCookie(cname) {
    var cookie=getCookie(cname);
    if (cookie) {
        return true;
    }else{
        return false;
    }
}

那么导致这种行为的原因是什么?

【问题讨论】:

    标签: javascript android ios facebook cookies


    【解决方案1】:

    页面是通过 Facebook App 在应用内浏览器中加载的,还是直接在 Safari/Chrome 中加载的?在点击链接时,或者在(应用内)浏览器第一次打开后的每个“第一次”请求时,您是否有这种行为?

    对我来说,以下适用于 iOS Facebook 应用的应用内浏览器。第一次没有cookie。当我关闭浏览器并再次从时间线/newfeeds 中单击链接时,应用内浏览器第二次打开时,找到了 cookie。

    <html>
    <head>Test Cookies</head>
    
    <script type="text/javascript">
    function getCookie(cname) {
        var name = cname + "=";
        var ca = document.cookie.split(';');
        for(var i=0; i<ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1);
            if (c.indexOf(name) == 0) return c.substring(name.length,c.length);
        }
    }
    
    function setCookie(cname, cvalue, exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays*24*60*60*1000));
        var expires = "expires="+d.toUTCString();
        document.cookie = cname + "=" + cvalue + "; " + expires + "; path=/;";
    }
    
    function checkCookie(cname) {
        var cookie=getCookie(cname);
        if (cookie) {
            return 'yes, cookie! ' + cookie;
        }else{
            return 'no cookie';
        }
    }
    </script>
    
    <body>
    <script type="text/javascript">document.write(checkCookie('test')); setCookie('test', 'value', 1); </script>
    </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2021-02-04
      • 1970-01-01
      相关资源
      最近更新 更多