我正在尝试在javascript中设置会话cookie,如下所示:
document.cookie = 'name=alex; path=/'
Run Code Online (Sandbox Code Playgroud)
但即使我退出浏览器并再次启动浏览器,Chrome也不会将其删除.
我检查了Firefox和Opera,两者都按预期工作 - 他们在浏览器退出时删除了会话cookie.
Chrome是否只是忽略过期规则?
我检查了多个操作系统,发现会话cookie在Windows XP和Ubuntu中的Chrome上被删除,但在Mac OSX Lion中没有.
我的研究表明,如果我创建一个cookie并且没有设置过期日期,它将在浏览器关闭时到期.
所以我创建了一个像这样的cookie:
Response.Cookies.Set(new HttpCookie("MyKey", "X"));
Run Code Online (Sandbox Code Playgroud)
但是当我关闭浏览器然后重新打开它时,以下表达式等于true:
Request.Cookies["MyKey"] != null
Run Code Online (Sandbox Code Playgroud)
如何在浏览器会话结束时让cookie过期?
注意:出于我的目的,使用静态数据而不是cookie似乎是理想的.但我的理解是,ASP.NET可以出于各种原因重新启动,如果我丢失了这个设置,那么就可以从当前用户手中解决问题.
试过了
if (Request.Cookies["IsGuest"] != null)
{
Response.Cookies["IsGuest"].Expires = DateTime.Now.AddDays(-1);
//HttpCookie myCookie = new HttpCookie("IsGuest");
//myCookie.Expires = DateTime.Now.AddDays(-1d);
//Response.Cookies.Add(myCookie);
}
string a = Request.Cookies["IsGuest"].Value;
Run Code Online (Sandbox Code Playgroud)
并尝试通过注释未注释的代码和注释注释的代码,但是
string a = Request.Cookies["IsGuest"].Value;
Run Code Online (Sandbox Code Playgroud)
始终运行,Request.Cookies["IsGuest"]
永不运行null