默认ASP.NET Forms Authentication cookie sets it's name as ""。注意第一个字符是句点吗?这有什么特别的原因吗?例如,这是否会对目标域的域名或子域产生影响。
或者这纯粹是MS开发人员想出的一些随机的东西(可能是为了帮助排序cookie,当他们在调试或其他什么的时候)。因为带句点的文本通常列在其他字符串之前)?
发布于 2011-03-22 08:14:46
我找不到sajoshi提到的“两点”要求,但我在HTTP规范rfc2109上找到了这一点。
Domain=domain可选。Domain属性指定cookie有效的域。显式指定的域必须始终以点开头。
http://www.w3.org/Protocols/rfc2109/rfc2109
本节是4.2.2 Set-Cookie语法。在sajoshi的帖子之前,我根本不知道有一个点的要求,所以我查了一下,但看起来他是对了一半。如果有人仔细阅读它,并能指出我遗漏的任何东西,请这样做。
更新
I in 在4.3.3节中发现
请求主机是一个完全限定的域名(不是IP地址),其格式为HD,其中D是域属性的值,H是包含一个或多个点的字符串。
(FQDN是完全限定的域名)
将拒绝来自请求主机y.x.foo.com的Domain=.foo.com的Set-Cookie,因为H是y.x且包含一个点
和,
将接受来自用于Domain=.foo.com的请求主机x.foo.com的
集Cookie。
因此,看起来Cookie域名至少需要两个点,如果它是基于域名命名的。但是,aspnet身份验证cookie不能做到这一点,这就是它只需要一个点的原因。
发布于 2011-11-05 01:30:14
中的cookie是完全可选的,它可以减少覆盖代码设置的不同cookie的可能性。两个点的要求只与域名相关。
发布于 2011-03-21 16:30:34
前导点字符是必需的。这是必要的,因为HTTP规范要求Cookie域属性必须至少包含两个点。
如果在开发期间想要在http://site1.localhost/和http://site2.localhost/之间共享cookies,这会导致不便。要解决此问题,您可以在主机文件中将site1.localhost.dev和site2.localhost.dev映射到127.0.0.1,然后将域设置为.localhost.dev
希望这能帮到你。
https://stackoverflow.com/questions/5373980
复制相似问题