【问题标题】:how do I set cookie expiration time in user local time?如何在用户本地时间设置 cookie 过期时间?
【发布时间】:2011-06-25 18:19:59
【问题描述】:

我希望 cookie 在 10 分钟内准确过期(只是为了争论)。

如果我使用Expires = DateTime.Now.AddMinutes(30) 并且用户落后我 3 小时,cookie 将在收到后立即过期(正确吗?)

如何设置过期时间,使其对用户来说是本地的?

当然,我可以使用 JavaScript 将这些信息与请求一起发送,或者使用某种 JS 库在客户端创建 cookie,或者保留用户个人资料并询问用户时区,但我正在寻找懒人解决方案。

【问题讨论】:

  • 似乎 Set-Cookie expires 字段格式为 Wdy, DD-Mon-YY HH:MM:SS GMT,这使我的问题有误。 Cookie 过期时间不是特定于本地时间的,它是 GMT。

标签: c# cookies


【解决方案1】:

cookie 到期日期将结束为 GMT 时间,因此您的代码可以正常工作。

【讨论】:

  • 查看我对该问题的评论。 Cookie 的过期时间是在 GMT 中给出的,还是我遗漏了什么?
  • @user93422 - 查看我更新的答案。看起来您可以将 cookie 设置为 本地 服务器时间。
  • 即使您使用DateTime.Now,它也会使用当前(服务器)时区将其转换为UTC。所以无论你怎么做——你都会得到正确的过期时间。魔术在这里发生:dt = dt.ToUniversalTime(); - 如果不是 UTC,它将调整时间。 (HttpUtility::FormatHttpCookieDateTime)
  • “如果 DateTimeKind 属性设置为 Unspecified,则假定为 Utc” - 我相信 DateTime.Kind.Unspecified 假定为本地。
猜你喜欢
  • 1970-01-01
  • 2011-12-17
  • 1970-01-01
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 2017-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多