我很惊讶我找不到任何答案。
如何将 cookie 中的 sessionid 设置为在会话结束时过期? (当浏览器关闭或用户一段时间不活动时)。
我发现的两个解决方案是
(httpcookie).Expires = HttpContext.Current.Session.Timeout
这给了我一个编译错误,所以我不知道用户在发布之前是否检查了他的代码。另一个是将过期日期设置为 1 天前,我的直觉认为这是错误的。我该怎么做呢?
你说的是非持久性cookie。默认情况下,asp.net 以这种方式发送 cookie。它们之间的主要区别是持久性 cookie 设置了过期值。
因此,如果您不希望 cookie 持续存在,请不要设置过期值。
也就是说,cookie 将保留在内存中,直到浏览器实际关闭为止。假设他们浏览到您的网站并且您设置了一个非持久 cookie。他们做事然后浏览。随后,他们使用相同的浏览器实例返回您的网站。 cookie 仍然会在那里。
现在,如果他们在任何时候关闭浏览器,那么 cookie 就会被清除。
要点是,不要设置过期标头。尤其是当会话日期到期时。会话日期通常仅是未来 20 分钟左右的时间,但到期日期会随着用户浏览您的网站而向前滚动。
=====更新=====
我使用以下代码进行测试:
protected void Page_Load(object sender, EventArgs e) {
if (!Page.IsPostBack) {
HttpCookie c = Request.Cookies["test"];
if (c != null) {
Response.Write(String.Format("test value is {0} <br />", c.Value));
}
} else {
HttpCookie c = new HttpCookie("test");
c.Value = "HERE IT IS";
Response.Cookies.Add(c);
}
}
protected void Button1_Click(object sender, EventArgs e) {
Response.Write("clicked<br />");
}
.aspx 文件有一个简单的按钮,它触发了button1_click 处理程序。当我最初使用任何最新的浏览器(即 firefox、chrome)浏览它时,没有 cookie。单击按钮后,就会设置 cookie。然后我完全关闭浏览器,重新打开并浏览回到该网站。在所有情况下,cookie 都消失了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)