为什么默认的ASP.NET Forms Authentication Cookie在其默认名称中具有前导句点=>".ASPXAUTH"

Pur*_*ome 16 .net asp.net cookies forms-authentication

默认的ASP.NET Forms Authentication cookie将其名称设置为" .ASPXAUTH ".注意第一个字符是句号?这有什么特别的原因吗?例如,这是否会对目标域的域名或子域产生影响.

或者它纯粹是一个MS开发人员提出的随机事物(也许是为了帮助排序cookie,当他们正在调试或者其他东西时......因为句子会在其他字符串之前被列出)?

小智 11

同一个cookie是完全可选的,只是降低了您覆盖代码可能设置的其他cookie的可能性.两点要求仅与域名相关.

  • 这应该是公认的答案,因为 OP 询问的是“name”而不是“domain”。我核实并澄清了答案,并引用了Msft的消息来源。谢谢无名胆小鬼!作为记录,我已成功使用“test”作为“name”值,向自己证明不需要前导句点。 (2认同)

sma*_*man -1

我无法找到 sajoshi 提到的“两个点”要求,但我确实在 HTTP 规范 rfc2109 上找到了这一点。

域=域 可选。Domain 属性指定 cookie 有效的域。明确指定的域必须始终以点开头。

http://www.w3.org/Protocols/rfc2109/rfc2109

本节是4.2.2 Set-Cookie 语法。在sajoshi发帖之前我根本不知道有点要求,所以我查了一下,但看来他只对了一半。如果有人仔细阅读并能指出我错过的任何内容,请这样做。

更新

确实在第 4.3.3 节中发现

请求主机是 FQDN(不是 IP 地址),格式为 HD,其中 D 是 Domain 属性的值,H 是包含一个或多个点的字符串。

(FQDN 是完全合格的域名)

来自请求主机 yxfoo.com 的 Domain=.foo.com 的 Set-Cookie 将被拒绝,因为 H 是 yx 并且包含一个点

和,

来自 request-host x.foo.com 的 Domain=.foo.com 的 Set-Cookie 将被接受。

因此,如果 Cookie 域的名称基于域名,则它似乎需要至少两个点。然而,aspnet 身份验证 cookie 并没有执行此操作,因此它只需要一个点。

  • 问题是关于 cookie 名称,而不是域名。 (11认同)
  • 有趣..但我仍然不明白这一切。首先,我完全理解 FQDN 是什么,它们总是以点结尾(所有互联网的根),因此,在开头有一个点意味着有预域(子域、子子域等)的空间。但是.. ASP.NET cookie 还有一个名为“域”的属性(http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.cookiedomain.aspx)。那么你确定你不是在谈论那个财产吗? (2认同)