gpt4 book ai didi

asp.net - ASP.NET cookie过期时间始终为1/1/0001 12:00 AM

转载 作者:行者123 更新时间:2023-12-03 09:41:13 24 4
gpt4 key购买 nike

我使用以下代码设置Cookie的到期时间:

// remove existing cookies.
request.Cookies.Clear();
response.Cookies.Clear();

// ... serialize and encrypt my data ...

// now set the cookie.
HttpCookie cookie = new HttpCookie(AuthCookieName, encrypted);
cookie.Expires = DateTime.Now.Add(TimeSpan.FromHours(CookieTimeOutHours));
cookie.HttpOnly = true;
response.Cookies.Add(cookie);

// redirect to different page

当我在另一页上读取Cookie超时时,我得到的是1/1/0001 12:00 AM。如果有人可以帮助我解决问题,我将不胜感激。我正在使用ASP.NET 3.5

好。在阅读了Gulzar的链接之后,看来我无法检查cookie。HttpRequest是否完全过期?因为链接似乎暗示cookie.Expires始终设置为DateTime.MinValue,因为服务器永远无法知道客户端计算机上的实际时间?因此,这意味着我必须自己将时间存储在cookie中并进行检查?我的理解正确吗?

谢谢
香卡

最佳答案

这里的问题实际上并不在于ASP.NET,而是浏览器在http请求中提供的信息量。无论您在服务器端使用什么平台,都无法获得到期日期。

正如您对问题的总结一样,由HttpRequest对象提供的HttpCookie对象的Expires属性始终设置为1/1/0001 12:00 AM。
这是因为当浏览器发送请求时,该到期信息以及诸如域和路径之类的属性不会被浏览器传递给服务器。发送的唯一cookie信息是名称和值。因此,请求中的cookie将具有这些“缺失”字段的默认值,因为它们在服务器端是未知的。

我想这背后的原因是,cookie的到期,域和路径属性仅在浏览器决定是否应在请求中传递cookie时才打算使用。服务器仅对名称和值感兴趣。

您周围的工作已建议将过期时间复制为cookie的另一个值,这是获得所需行为的一种方式。

关于asp.net - ASP.NET cookie过期时间始终为1/1/0001 12:00 AM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/198295/

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