【问题标题】:Javascript set cookie for current domain including subdomainsJavascript 为当前域(包括子域)设置 cookie
【发布时间】:2018-09-30 19:09:20
【问题描述】:

是否可以为当前包括子域存储一个JS cookie。

例如: document.cookie = "key=value; expires=Tue, 16 Apr 2019 11:31:56 GMT; path=/;secure" 为当前域设置 cookie,但不为域名添加点。

我知道可以通过domain=.example.com 指定域,但我不想硬编码域名。

我尝试了类似的方法,但没有成功: document.cookie = "key=value; expires=Tue, 16 Apr 2019 11:31:56 GMT; path=/;secure;domain=."

更新:

我知道您可以使用 window.location.hostname 获取当前域,但有没有一种解决方案,我不需要以编程方式获取域名

更新 2:

就像这里描述的:What does the dot prefix in the cookie domain mean?

前面的点表示 cookie 对子域也有效;然而最近的 HTTP 规范 (RFC 6265) 改变了这个规则,所以现代浏览器不应该关心前导点。实现已弃用的 RFC 2109 的旧浏览器可能需要该点。

这意味着如果您在现代浏览器中的域名前使用一个点,它不会产生影响。也就是说,您可以将 JS cookie 的域部分留空,并将其设置为当前域(也匹配子域)

【问题讨论】:

    标签: javascript http cookies


    【解决方案1】:

    可能的解决方案:

    var domainName = window.location.hostname;
    document.cookie = "key=value; expires=Tue, 16 Apr 2019 11:31:56 GMT; path=/; secure; domain=." + domainName;
    

    【讨论】:

    • 如果未指定,默认为当前文档位置的主机部分(但不包括子域)。与早期的规范相反,域名中的前导点被忽略,但浏览器可能拒绝设置包含此类点的 cookie。如果指定了域,则始终包含子域。 [来源:developer.mozilla.org]
    猜你喜欢
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 2018-03-09
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多