【问题标题】:setting cross-subdomain cookie with javascript使用 javascript 设置跨子域 cookie
【发布时间】:2011-01-17 12:15:52
【问题描述】:

我应该如何为these 函数添加域支持?我想实现 .example.com 被声明为域,以便可以跨 example.com 的所有子域读取 cookie。以目前的形式,由于没有设置域,它只能从 www.example.com 读取

【问题讨论】:

    标签: javascript setcookie


    【解决方案1】:

    这是一个关于如何在域之间共享 cookie 的链接:

    https://www.thoughtco.com/javascript-by-example-2037272

    它涉及设置cookie字符串的域属性,如:

    document.cookie = "myValue=5;path=/;domain=example.com";
    

    现在应该可以访问 example.com 的所有子域,例如 login.example.com

    【讨论】:

    • ppk 函数的语法似乎有所不同,因为它从上面的行中获取了它的名称和到期时间:document.cookie = name+"="+value+expires+"; path=/";这些双引号呢?
    • @newnomad:JavaScript 像大多数编程语言一样在字符串文字周围使用引号。
    • 如果我不逃逸()它就不能添加到 cookie 中。但如果转义 - 使用路径和域设置值
    • 我遇到了类似的问题,虽然我在域名前添加了一个前导点(以便它可用于另一个子域),但直到我添加了路径=/ 部分。
    • 链接没有解释任何内容。
    【解决方案2】:

    在我的例子中,我们需要设置一个可以在我们的 .com 子域中使用的 cookie:

    function setCrossSubdomainCookie(name, value, days) {
      const assign = name + "=" + escape(value) + ";";
      const d = new Date();
      d.setTime(d.getTime() + (days*24*60*60*1000));
      const expires = "expires="+ d.toUTCString() + ";";
      const path = "path=/;";
      const domain = "domain=" + (document.domain.match(/[^\.]*\.[^.]*$/)[0]) + ";";
      document.cookie = assign + expires + path + domain;
    }
    

    这可能不适用于.co.uk等,但可以使用该原理

    【讨论】:

    • 我将如何修改它以与 .co.uk 一起使用?假设它需要一些正则表达式更改
    猜你喜欢
    • 2015-09-18
    • 2017-03-30
    • 1970-01-01
    • 2017-10-06
    • 2023-04-04
    • 2020-06-21
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    相关资源
    最近更新 更多