cookie域中的点前缀是什么意思?

时间:2012-03-08 13:13:25

标签: cookies

enter image description here

local.test.com.local.test.com之间有什么区别?屏幕截图来自Chrome。

4 个答案:

答案 0 :(得分:59)

前导点表示cookie对子域也有效;尽管如此,最近的HTTP规范(RFC 6265)改变了这一规则,因此现代浏览器不应该关注领先的点。旧浏览器实现已弃用的RFC 2109可能需要这个点。

RFC 6265 section 4.1.2.3

  

例如,如果Domain属性的值为“example.com”,则在向example.com,www.example.com和www.corp发出HTTP请求时,用户代理将在Cookie标头中包含cookie。 .example.com的。 (请注意,前导%x2E(“。”)(如果存在)将被忽略,即使该字符不被允许,但尾随的%x2E(“。”)(如果存在)将导致用户代理忽略该属性。 )

答案 1 :(得分:46)

local.test.com将用于域名,而.local.test.com也将用于子域名。

答案 2 :(得分:8)

来自文章The definitive guide to cookie domains and why a www-prefix makes your website safer

  

结论

     

虽然定义有所不同,但我们可以简化它   对于以下任何实施

     
      
  • 如果Cookie中未设置域,则 的cookie应仅匹配   请求的确切主机名。 [注意:这与返回没有点的域的Set-Cookie不同!]没有子域,没有部分匹配。   这意味着根本不包括域属性 - 它无效   设置一个空的域属性。不幸的是, Internet Explorer   似乎将此视为主机名以及任何子域

  •   
  • 在Cookie中设置域名时,安全的选择是先让它出现   用点像.erik.io。 Cookie将与所有子域匹配。

  •   
  • 设置没有前一个点的cookie域,如erik.io,是   RFC 2109实现中无效,并将生成相同的   与其他实现中的前一个点一样的行为。有   无法将cookie限制为特定的显式设置域,   没有包含子域名。

  •   
     其他有价值的观察:      
      
  • 在所有RFC中,指定的Cookie域必须与当前主机匹配   名称,按正常匹配。在www.erik.io中设置cookie   来自erik.io的回复无效,作为域名的cookie   www.erik.io与erik.io不匹配,前者更具体。

  •   
  • 在RFC 6265中,在解析时明显降低了域   Set-Cookie标题。

  •   

答案 3 :(得分:1)

“.local.test.com”中的前导点就是chrome如何使用“Domain = local.test.com”设置(或“Domain = .local.test.com”,即相同)。

没有“Domain = something”的Set-Cookie定义查看没有前导点的域(= host)。

因此,chrome中的前导点不会反映服务器是否使用了前导点,而是该cookie是否在服务器的定义中有“Domain = something”。 (如果有,则cookie也将被发送到子域)。

至少这是我的测试所显示的。 Chrome应该更容易阅读,例如查看定义Cookie的确切字符串以及何时收到它。