【发布时间】:2015-10-10 03:59:54
【问题描述】:
我有一个在加利福尼亚的服务器上运行的 ASP.NET 应用程序。服务器的当前时间是:
- 7/20/2015 14:00 UTC-08:00
Bob 已连接到我的服务器。鲍勃在德克萨斯。他现在的时间是:
- 7/20/2015 16:00 UTC-06:00
我的应用程序创建一个 cookie 并设置它的到期日期。
var name = "MyName";
var value = "MyValue"
var hoursToLive = 24;
var myCookie = new HttpCookie(name )
{
Value = value,
Expires = DateTime.Now.AddHours(hoursToLive)
};
cookie 会在 24 小时后过期,还是会因为 Bob 和服务器之间的时差而在 22 小时后过期?我知道DateTime.Now uses the server's local time,但我不清楚浏览器如何确定 cookie 已过期(具体而言,使用哪个时区来确定过期)。
【问题讨论】:
-
为什么不试试2小时过期,看看是不是马上过期?
-
@AndreasNiedermair 部署产品很乏味(即需要几个小时),我想知道在经历这种痛苦之前会发生什么。
-
制作一个小演示应用,并使用具有不同时区的虚拟机?
-
@AndreasNiedermair 这是个好主意。
-
Cookies 被发送到带有 expires 属性的浏览器,例如:
Expires=Wed, 09 Jun 2021 10:18:14 GMT。我从未测试过它,但浏览器应该能够处理它并在发送后 24 小时内过期。