Javascript 在域和子域之间共享cookie

Javascript 在域和子域之间共享cookie,javascript,cookies,Javascript,Cookies,看完这篇文章,我还是不完全明白。我的任务是在域及其子域之间共享cookies。它们都可以安装: 如果sub1.domain.com首先安装它们,那么它们应该可以在sub1.domain.com和domain.com中访问 如果domain.com首先安装它们,那么它们应该可以在sub1.domain.com和domain.com中访问 我的意思是,当新用户进入主域或子域时,它们就会被安装 因此,如果我将它们安装为setcookie:name=value;domain=example.com在这些

看完这篇文章,我还是不完全明白。我的任务是在域及其子域之间共享cookies。它们都可以安装:

  • 如果sub1.domain.com首先安装它们,那么它们应该可以在sub1.domain.com和domain.com中访问

  • 如果domain.com首先安装它们,那么它们应该可以在sub1.domain.com和domain.com中访问

  • 我的意思是,当新用户进入主域或子域时,它们就会被安装


    因此,如果我将它们安装为
    setcookie:name=value;domain=example.com
    在这些域中的任何一个上,它们会被共享吗?

    您需要在域中添加一个
    。例如:
    设置Cookie:name=value;domain=.example.com
    ,这将使cookie携带
    example.com
    任何内容。example.com
    是的,它们将被共享。以下是域匹配的工作原理():

    字符串域与给定的域字符串匹配,前提是 以下条件适用:

    • 域字符串和字符串是相同的。(请注意 域字符串和字符串将被规范化为 此时请使用小写。)
    • 以下所有条件均成立:
      • 域字符串是字符串的后缀
      • 字符串中未包含的最后一个字符 域字符串是
        %x2E
        )字符
      • 字符串是主机名(即,不是IP地址)
    因此,对于设置为
    example.com
    的cookie域,
    example.com
    subdomain.example.com
    将成功匹配:

    • 对于第一个,它是相同的域字符串-
      example.com
      ,因此满足了第一个条件
    • 对于第二个条件,满足第二个条件:
      • example.com
        是subdomain.example.com
      • 字符串其余部分的最后一个字符——
        子域。
        ——显然是
      • subdomain.example.com
        绝对是一个主机名,而不是IP

    现代浏览器不再需要领先的dot跨域传输。这仍然有效,但前导圆点和不前导圆点应该有相同的结果。是的,根据您问题中SO链接中的信息。在从任一域设置cookie时使用根域将使根域和子域都可以访问cookie。