在域和子之间共享cookie

时间:2014-12-21 13:20:20

标签: javascript cookies

阅读此Share cookie between subdomain and domain后,我仍然不完全明白。我的任务是共享域与其子域之间的cookie。他们都可以安装它们:

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

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

  3. 首先安装我的意思是,一旦新用户进入主域或子域,就会安装它们。

    因此,如果我在其中任何一个域上安装Set-Cookie: name=value; domain=example.com,那么它们会被共享吗?

2 个答案:

答案 0 :(得分:1)

是的,他们将被分享。以下是域匹配的工作原理(quoting the RFC):

  

字符串域 - 匹配给定的域字符串(如果至少有一个)   以下条件成立:

     
      
  • 域名字符串和字符串相同。 (注意两者     域字符串和字符串将被规范化为     此时小写。)
  •   
  • 满足以下所有条件:   
        
    • 域字符串是字符串的后缀。
    •   
    • 未包含在字符串中的字符串的最后一个字符    域字符串是%x2E".")个字符。
    •   
    • 字符串是主机名(即不是IP地址)。
    •   
  •   

因此,对于设置为example.com的Cookie域,example.comsubdomain.example.com都会成功匹配:

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

答案 1 :(得分:-1)

您需要在域名前添加.。例如:Set-Cookie: name=value; domain=.example.com,这会使Cookie在example.comanything.example.com中传播。