处理浏览器缓存时如何正确处理Cookie

时间:2018-07-30 20:24:16

标签: javascript cookies

我正在执行Cookie通知,以遵守欧洲最新的GDPR法律。这样做时,我注意到使用“后退”和“前进”按钮导航到页面时脚本无法在Safari中执行。这会引起一些问题。

例如:拒绝跟踪Cookie的用户不应获得投放个性化广告的信息。我通过阅读保存首选项的cookie来做到这一点:

$( document ).ready(function() {
    if(readCookie('Cookie_TrackingPreference')==1)
    {
         //show personalized ads
    }
     ...
});

function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

假设用户接受跟踪cookie。该页面将删除cookie。导航回到此页面,将导致忽略文档就绪功能,从而执行非跟踪cookie代码,这显然是不希望的。

当他们已经做出选择时,隐藏模态也是一样。

我自己找到了一个快速修复程序,方法是将此PHP代码放在页面顶部,迫使浏览器忽略缓存:

<?php
header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1.
header("Pragma: no-cache"); // HTTP 1.0.
header("Expires: 0"); // Proxies.
?>

这有效。所以我的问题不是关于如何解决这个问题。我只是对做这些事情的“通用”或正确方法感到好奇。由于几乎每个网站都使用这种cookie模式,因此我无法想象它们都会使浏览器忽略缓存,因为这会减慢页面加载速度。

0 个答案:

没有答案