【问题标题】:JavaScript cookies not working on sub-domainsJavaScript cookie 不适用于子域
【发布时间】:2019-05-25 04:31:20
【问题描述】:

我有一个 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 设置。

【问题讨论】:

    标签: javascript cookies


    【解决方案1】:

    设置 cookie 时,您的域必须始终采用 .domain.com 格式 - 点和根域以及 path=/

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

    //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=/";
    

    来源:

    How to set cookies to share across all subdomains using JavaScript

    【讨论】:

    • 我已将路径设置为/ 以及格式为.brokenhearts.ml 的域
    • 是这样的吗:document.cookie="yourvar=sumvalue; domain=.brokenhearts.ml; path=/" ?尝试按字面意思简单地进行 - 看看会发生什么。
    • 很高兴听到这个消息。如果没有人有更好的提交,请接受作为正确答案以结束问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    • 2015-04-20
    • 2017-10-28
    • 2015-08-13
    相关资源
    最近更新 更多