Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么Chrome和Safari没有看到某些子域的cookie?_Javascript_Google Chrome_Cookies_Safari - Fatal编程技术网

Javascript 为什么Chrome和Safari没有看到某些子域的cookie?

Javascript 为什么Chrome和Safari没有看到某些子域的cookie?,javascript,google-chrome,cookies,safari,Javascript,Google Chrome,Cookies,Safari,我有一个网站正在生成cookie,例如.com。在Firefox、Chrome 18和Safari中都可以访问它。但是,我无法从webkit派生的浏览器中访问cookie。它在Firefox中工作 当从javascript设置cookie时,我已经使用domain=example.com和.example.com中的一个进行了测试 cookie的路径为/并且已设置过期时间 如何指定子域? Chrome希望子域的Cookie以点为前缀 e、 g.domain=.example.com 你可能会发现

我有一个网站正在生成cookie,例如.com。在Firefox、Chrome 18和Safari中都可以访问它。但是,我无法从webkit派生的浏览器中访问cookie。它在Firefox中工作

当从javascript设置cookie时,我已经使用domain=example.com和.example.com中的一个进行了测试


cookie的路径为/并且已设置过期时间

如何指定子域? Chrome希望子域的Cookie以点为前缀 e、 g.domain=.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不会根据定义匹配domain.example.com。但www.example.com(或域中的任何其他“非空名称”)>>会。这个RFC在理论上被RFC2965淘汰了,它规定了在Set-Cookie2操作中为域强制一个前导点
正如@Tony所指出的,更重要的是现实世界。要了解实际用户代理正在做什么,请参阅

Firefox3的nscookeService.cpp 及

Chrome's cookie_monster.cc 要了解实际站点正在做什么,请尝试使用>--save cookies、--load cookies和--debug玩wget,看看发生了什么

您可能会发现,事实上,大多数网站都在使用旧RFC规范中的Set->>Cookie与“主机”值的组合,隐式地没有前导点(如twitter.com所做的)或设置域值(如前导点),并重定向到www.example.com(如google.com所做的)等服务器


看一看是的,看这条线索让我觉得Firefox是正确的,Chrome和Safari没有正常工作。正如我所说,第一级子域可以工作,但不是两级。如果cookie被定义为.example.com,我希望www.example.com和something.ww.example.com都能工作。我想我希望有人知道为什么Chrome会出现这种情况,或者是否有解决办法。正如在最初的问题中提到的,尝试了一个前导点。