【发布时间】:2012-03-25 23:15:15
【问题描述】:
local.test.com 和 .local.test.com 有什么区别?屏幕截图来自 Chrome。
【问题讨论】:
-
2016 年 9 月 26 日 16:44 来自 user2864740 的评论 - 链接已失效,显然 erik.io 域已传递给另一个用户或域注册商。
标签: cookies
local.test.com 和 .local.test.com 有什么区别?屏幕截图来自 Chrome。
【问题讨论】:
标签: cookies
来自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 标头。
【讨论】:
“.local.test.com”中的前导点就是 chrome 如何查看设置了“Domain=local.test.com”(或“Domain=.local.test.com”的 cookie,即一样)。
不带“Domain=something”的 Set-Cookie 定义会查看不带前导点的域 (=host)。
因此,chrome 中的前导点并不反映服务器是否使用了前导点,而是该 cookie 在其定义中是否具有来自服务器的“Domain=something”。 (如果有,cookie 也会被发送到子域)。
至少这是我的测试结果。 Chrome 应该使其更易于阅读,例如查看定义 cookie 的确切字符串以及接收时间。
【讨论】:
前面的点表示 cookie 对子域也有效;然而最近的 HTTP 规范 (RFC 6265) 改变了这个规则,所以现代浏览器不应该关心前导点。实现已弃用的 RFC 2109 的旧浏览器可能需要该点。
例如,如果 Domain 属性的值为“example.com”,当向 example.com、www.example.com 和 www.corp.example.com 发出 HTTP 请求时,用户代理将在 Cookie 标头中包含 cookie。 (请注意,如果存在前导 %x2E(“.”),即使该字符是不允许的,也会被忽略,但如果存在尾随 %x2E(“.”),将导致用户代理忽略该属性。 )
【讨论】:
local.test.com 将用于域,而.local.test.com 也将用于子域。
【讨论】:
local.test.com 将不适用于x.local.test.com,但.local.test.com 同时适用于local.test.com 和x.local.test.com?