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

rip*_*234 70 cookies

在此输入图像描述

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

Tim*_*ido 70

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

RFC 6265第4.1.2.3节

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

  • RFC 的日期为 2011 年 4 月。IE8 和 IE9 最初都是在该日期之前发布的,但遗憾的是,它们仍在使用。所以我最好的猜测(没有尝试)是他们需要前导点。有人知道目前有多少浏览器仍在旧的 RFC 上运行吗? (2认同)

JoR*_*uss 52

local.test.com将用于域,同时.local.test.com也将用于子域.

  • 我认为这是不正确的.Cookie与任何和所有下游子域共享,有或没有点.您可以将子域视为来自其父级的"继承"Cookie.因此,在example.com上设置cookie会将其设置在blog.example.com和my.blog.example.com上.在blog.example.com上设置cookie会将其设置在this.is.my.blog.example.com以及介于两者之间的每个子域中.但是,就像继承一样,反之亦然.在blog.example.com上设置cookie不会在example.com上设置它. (22认同)
  • 因此`local.test.com`不适用于`x.local.test.com`,但`.local.test.com`适用于`local.test.com`和`x.local.test. com`? (11认同)
  • 为了澄清基于另一个答案,点*使用*来产生差异,但现在却没有.cookie将被发送到指定域的任何子域,包含或不包含前导点.实际控制它是否传递给子域的是*是否*您在cookie上设置了域.如果您根本没有设置域,则cookie将仅发送到发布它的确切域.它永远不会被发送到不太具体的父域(例如"local.test.com"将不包含在"test.com"的请求中),并且只有在设置域值时才会发送到匹配的子域. (6认同)
  • 也就是说,您可以通过不设置cookie的域(或设置为空字符串)将cookie限制为仅限主机.奇怪的是,这将仅为主机(example.com)而不是其任何子域设置cookie. (5认同)
  • @Triynko,当您要更新 cookie 时,点会有所不同。我还没有设法隔离所有规则,但我看到结果因前导点的存在与否而异,而且不是直接的。它的工作原理因浏览器而异,并且并不都是直观的。控制 cookiename 在浏览器上是否有前导点并不是我做过的最简单的编程任务。 (4认同)
  • 在 Chrome 83 中,我仍然可以拥有两个具有相同名称的单独 cookie,但一个用于域“.acme.com”,另一个用于“acme.com”,因此当您尝试更新/删除某个域时,该点确实会产生影响。曲奇饼。 (2认同)

use*_*740 10

从文章Cookie域的权威指南以及为什么www前缀使您的网站更安全:

结论

尽管定义有所不同,但我们可以将其简化为以下任何实现:

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

  • 在cookie中设置域时,安全的选择是让它前面有一个点,如.erik.io.Cookie将与所有子域匹配.

  • 设置没有前一个点的cookie域(如erik.io)在RFC 2109实现中无效,并且将产生与其他实现上的前一个点相同的行为.如果不包含子域,则无法将cookie限制为特定的显式设置域.

其他有价值的观察:
  • 在所有RFC中,指定的cookie域必须与正常匹配时的当前主机名匹配.在erik.io的响应中为www.erik.io设置cookie无效,因为域名为www.erik.io的cookie与erik.io不匹配,前者更具体.

  • 在RFC 6265中,在解析Set-Cookie标头时,域显式较低.


Kje*_* S. 9

“.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 的确切字符串以及接收时间。