subdomain.example.com可以设置一个可以被example.com读取的cookie吗?

我简直不敢相信这是很难确定的。

即使阅读了RFC,我也不清楚subdomain.example.com上的服务器是否可以设置可由example.com读取的cookie。

subdomain.example.com可以设置一个Cookie属性为.example.com的cookie。 RFC 2965似乎明确指出这样一个cookie不会被发送到example.com,但是同样地说,如果你设置了Domain = example.com,那么一个点就被预置了,就像你说的.example.com一样。 综合起来,这似乎是说,如果exam​​ple.com返回设置一个cookies与Domain = example.com,它不会得到该cookies回! 那不可能是正确的。

任何人都可以澄清规则是什么?

    从相同的RFC2109引用你读:

            *来自请求主机x.foo.com的Domain = .foo.com的Set-Cookie会
             被接受。
    

    所以subdomain.example.com可以为.example.com设置一个cookie。 到现在为止还挺好。

           以下规则适用于从中select适用的Cookie值
           用户代理拥有的所有cookie中。
    
           域select
                原始服务器的标准主机名必须域匹配
                 Cookie的Domain属性
    

    那么我们有一个域名匹配?

        * A是FQDNstring,其格式为NB,其中N是非空名称
         string,B的forms是.B',而B'是FQDNstring。  (所以,xycom
         域名匹配.y.com,但不是y.com。)
    

    但是现在example.com根据定义不会与.example.com域名匹配。 但www.example.com (或域中的任何其他“非空名称”)会。 这个RFC在理论上已经被RFC2965废弃了, RFC2965指出了在Set-Cookie2操作上强制领域的领域。

    更重要的是,正如@托尼所指出的那样,是现实世界。 有关实际用户代理正在执行的内容,请参阅

    Firefox 3的nsCookieService.cpp

    Chrome的cookie_monster.cc

    为了透视实际的网站正在做什么,尝试使用--load-cookies使用--save-cookies ,– --load-cookies--debug来查看正在发生的事情。

    您可能会发现实际上大多数站点正在使用旧版RFC规范中的Set-Cookie与“主机”值的组合,隐式地没有前导点(如twitter.com )或设置域值(带有前导点)并redirect到像www.example.com这样的服务器(就像google.com一样)。

    如果浏览器实现了RFC 6265 ,那么任何现代浏览器都应该在这一点上做,那么为.example.com设置的cookie将忽略前导点(见第5.2.3节),然后将cookie发送给裸体域和所有子域。

    如果您有来自较旧浏览器的大量stream量,请不要依赖此行为; 这个RFC只能到2011年。

    这不应该是可能的。 但是,正如你所说,由于这不是一个广泛logging的标准,它取决于你使用的是什么软件。

    大多数现代浏览器都遵循定义的“Web安全模型”。 该模型有效地pipe理浏览器在安全性方面的行为,例如cookie(特别是如何将它们发送回给定的网站)。 该模型还有一个规则,即“浏览器不会向没有设置Cookie的域名发送cookie”。

    话虽如此,domain.com应该能够为js.domain.com设置cookie。 但是,js.domain.com只能为自己设置Cookie。 但这完全取决于您使用的浏览器。