Facebook客户端(应用程序)和cookie(每个URL创建的新cookie而不是每个域创建一个)

时间:2015-03-23 23:02:54

标签: javascript android ios facebook cookies

我有一个网站,如果设置了cookie,它不应该显示AD,cookie有效24小时。在浏览器,移动浏览器等方面一切正常,但如果用户在iOS上从Facebook App(客户端)打开我的网站的网址(无法在Android上探测它),则cookie可以正常工作,但每个网址都会生成,因此广告会在第一次加载每个页面时显示。它应该只是每次第一次在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;
    }
}

那么这种行为可能是什么原因?

1 个答案:

答案 0 :(得分:0)

页面是通过Facebook App或Safari / Chrome直接在应用内浏览器中加载的吗?在遵循链接时,或者在每个&#34;第一个&#34;第一次打开(应用程序内)浏览器后的请求?

对我来说,以下适用于iOS Facebook App的应用内浏览器。第一次没有cookie。当我关闭浏览器并单击链接时,再次从时间轴/新进程中,并且第二次打开应用内浏览器,就会找到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>