首页 > 解决方案 > JavaScript cookie 不适用于子域

问题描述

我有一个 cookie 授权横幅,带有一个标有“知道了!”的按钮 这驳回了它。我通过设置一个cookie来做到这一点。

要设置 cookie,我在我的<head>:

<script>

    function setCookie(cname, cvalue, exdays)
        {
            var d = new Date();
            d.setTime(d.getTime() + (exdays*24*60*60*1000));
            var expires = "expires="+ d.toUTCString();
            var domain = ".brokenhearts.ml";
            var security = "secure";
            var location = "/";
            document.cookie = cname + "=" + cvalue + ";" + expires + ";" + location + ";" + domain + ";" + security;
        }

</script>

我已将其设置为在单击按钮时执行:

var privacyValue = "yes";
setCookie("privacy", privacyValue, 365);

问题是,当我在 Chrome 中检查 cookie 时,它​​会显示如下内容:

饼干

如您所见,cookie 仅针对 www.brokenhearts.ml 而不是为其子域设置。我希望为所有子域设置 cookie。

我尝试将域设置为“brokenhearts.ml”的cookie,但它仍然只为www.brokenhearts.ml设置。

标签: javascriptcookies

解决方案


设置 cookie 时,您的域必须采用.domain.com– 点和根域的格式,并且path=/始终为 。

如果你不设置path=/,自动路径将被保存为 cookie 的保存位置——因此它不能跨任何子域访问。

//variables
var LastReportGenerated="Jul 11 2013",
baseDomain = '.cssjunction.com',
expireAfter = new Date();

//setting up  cookie expire date after a week
expireAfter.setDate(expireAfter.getDate() + 7);

//now setup cookie
document.cookie="Report={'ReportName':'MainReport', 'lastGenerated':" + LastReportGenerated + "}; domain=" + baseDomain + "; expires=" + expireAfter + "; path=/";

来源:

如何使用 JavaScript 设置 cookie 以在所有子域之间共享


推荐阅读