local.test.com
和.local.test.com
之间有什么区别?屏幕截图来自Chrome。
答案 0 :(得分:59)
前导点表示cookie对子域也有效;尽管如此,最近的HTTP规范(RFC 6265)改变了这一规则,因此现代浏览器不应该关注领先的点。旧浏览器实现已弃用的RFC 2109可能需要这个点。
例如,如果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的确切字符串以及何时收到它。