gpt4 book ai didi

asp.net - 将cookie设置为在 session 结束时过期? asp.net

转载 作者:行者123 更新时间:2023-12-03 08:20:52 26 4
gpt4 key购买 nike

我很惊讶我找不到任何答案。

如何将我的 cookie 中的 sessionid 设置为在 session 结束时过期? (当浏览器关闭或用户在一段时间内处于非事件状态时)。

我找到的两个解决方案是

(httpcookie).Expires = HttpContext.Current.Session.Timeout

这给了我一个编译错误,所以我不知道用户在发布之前是否检查了他的代码。另一个是将到期日期设置为 1 天前,我的直觉认为这是错误的。我该怎么做呢?

最佳答案

您说的是非持久性 cookie。默认情况下,asp.net 以这种方式发送 cookie。它们之间的主要区别在于持久性 cookie 有一个 expires 值集。

因此,如果您不希望 cookie 持续存在,则不要设置 expires 值。

也就是说,cookie 将保留在内存中,直到浏览器实际关闭。假设他们浏览到您的网站并且您设置了一个非持久性 cookie。他们做事并浏览。稍后,他们使用相同的浏览器实例返回您的站点。 cookie 仍然存在。

现在,如果他们在任何时候关闭浏览器,那么 cookie 将被清除。

重点是,不要设置 expires header 。尤其是在 session 日期到期时。 session 日期通常只有 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 都不见了。

关于asp.net - 将cookie设置为在 session 结束时过期? asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737285/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com