为什么Chrome和Safari不会看到某些子域名的Cookie?

时间:2012-05-03 19:34:34

标签: javascript google-chrome cookies safari

我有一个为example.com生成cookie的网站。它可以在http://example.comhttp://www.example.com的Firefox,Chrome 18和Safari中访问。但是,我无法从webkit派生的浏览器中的http://test.me.example.com访问cookie。它适用于Firefox。

我在使用javascript设置Cookie时,使用domain = example.com和.example.com之一对此进行了测试。

Cookie的路径为/且已设置到期。

1 个答案:

答案 0 :(得分:0)

如何指定子域名? Chrome预计子域名的Cookie会以点为前缀 例如域= .example.com的

您可能会发现此帖子很有用:https://serverfault.com/questions/153409/can-subdomain-example-com-set-a-cookie-that-can-be-read-by-example-com

  

从您阅读的相同RFC2109引用:

   * A Set-Cookie from request-host x.foo.com for Domain=.foo.com would
     be accepted.
     

因此subdomain.example.com可以为.example.com设置cookie。到目前为止一切都很好。

   The following rules apply to choosing applicable cookie-values from
   among all the cookies the user agent has.

   Domain Selection
        The origin server's fully-qualified host name must domain-match
        the Domain attribute of the cookie
     

我们还有域名匹配吗?

     
      
  • A是FQDN字符串,格式为NB,其中N是非空名称    字符串,B的格式为.B',而B'是FQDN字符串。 (所以,x.y.com    域名匹配.y.com但不是y.com。)   但是现在example.com根据定义不会与.example.com进行域匹配。但是www.example.com(或域中的任何其他“非空名称”)> >将。 RFC2965理论上废弃了这个RFC,它决定了在Set-Cookie2操作中强制域的前导点。
  •   
     

正如@Tony所指出的,更重要的是现实世界。有关实际用户代理正在做什么的一瞥,请参阅

     

Firefox 3的nsCookieService.cpp   和

     

Chrome的cookie_monster.cc   要了解实际网站的效果,请尝试使用> --save-cookies, - load-cookies和--debug,看看发生了什么。

     

您可能会发现实际上大多数网站都使用了Set->的某些组合。 >具有“主机”值的旧RFC规范中的Cookie,隐含地没有前导点(如twitter.com所做)或设置域值(带有前导点)并重定向到像www.example.com这样的服务器(如google.com)一样)。

相关问题