Rai*_*olt 14 c# asp.net cookies
我在加利福尼亚州的服务器上运行了一个ASP.NET应用程序.服务器的当前时间是:
Bob已连接到我的服务器.鲍勃在德克萨斯州.他现在的时间是:
我的应用程序创建一个cookie并设置其到期日期.
var name = "MyName";
var value = "MyValue"
var hoursToLive = 24;
var myCookie = new HttpCookie(name )
{
Value = value,
Expires = DateTime.Now.AddHours(hoursToLive)
};
Run Code Online (Sandbox Code Playgroud)
由于Bob和服务器之间的时差,cookie会在24小时后到期,还是会在22小时后到期?我知道DateTime.Now使用服务器的本地时间,但我不清楚浏览器如何确定cookie过期(具体来说,用什么时区来确定过期时间).
And*_*air 15
Cookie确实包含带expires标题的时区信息(主要是GMT),这使得客户端可以非常简单地处理服务器实际时区的偏移量.
示例:expires=Mon,20-Jul-2015 22:00:00 GMTif 2015-07-20 14:00:00 UTC-8是服务器的时间.当客户端或服务器决定cookie是否过期时,它会将其与相关的GMT时间进行比较.
我深入研究了代码System.Web.HttpCookie,并在以下代码中找到了相关代码GetSetCookieHeader():
if (_expirationSet && _expires != DateTime.MinValue) {
s.Append("; expires=");
s.Append(HttpUtility.FormatHttpCookieDateTime(_expires));
}
Run Code Online (Sandbox Code Playgroud)
当HttpUtility.FormatHttpCookieDateTime()返回一个UTC时间戳(无偏移,这并不重要,因为偏移量将为零).
对于大多数目的,格林威治标准时间(GMT)和协调世界时(UTC)可以被认为是相同的.你可以在这里阅读更多相关信息.
| 归档时间: |
|
| 查看次数: |
3872 次 |
| 最近记录: |