背景:
- AspNet 网络应用程序/C# 3.5
- IIS7
- 对比 2010
- Windows 7的
当用户通过身份验证时,我们创建一个 cookie,这样:
var cookieASP = FormsAuthentication.GetAuthCookie(user.Id, true);
cookieASP.Domain = "x.y.local";
是的,domain
对于这个例子是硬编码的。
使用 Firefox 11 中的 cookie 查看器扩展,我可以看到domain
cookie 是 : .x.y.local
,前导.
. 我知道它允许在w.x.y.local
和之间共享 cookie q.x.y.local
。行。
但是,当用户单击断开连接时,他并没有被踢出...
var cookieAsp = System.Web.Security.FormsAuthentication.GetAuthCookie(u.Identifiant, true);
cookieAsp.Expires = DateTime.Now.AddDays(-10);
Response.Cookies.Set(cookieAsp);
FormsAuthentication.SignOut();
使用调试器我们可以看到它cookieAsp.Domain
是空的。并且 cookie 不会从浏览器的 cookie 中删除。
如果我编辑 cookie 域(直接从浏览器),并将其域设置为x.y.local
不带前导.
,则 cookie 被删除并且用户断开连接。
我不明白为什么.
要添加它,以及为什么浏览器不能很好地理解它。
编辑(我猜是最重要的):我们这样做是因为如果我们不设置domain
,那么 IE8(只有 8)就无法理解我们的 cookie...