【问题标题】:Cookie expiration date not working C#Cookie到期日期不起作用C#
【发布时间】:2017-11-10 07:57:15
【问题描述】:

我正在设置这样的 cookie:

protected void SetCookie(bool value, int expiration)
{
    var cookie = Response.Cookies[COOKIE_NAME] ?? new HttpCookie(COOKIE_NAME);
    cookie.Value = value.ToString();
    cookie.Expires = DateTime.UtcNow.AddDays(expiration);
    Response.Cookies.Set(cookie);
}

在 SetCookie 函数中,当我检查最后一行的 cookie 时,Expiration 设置为明天的日期。

但是,当我在下一页加载时检索此 cookie:

var cookie = Request.Cookies[COOKIE_NAME];

cookie存在,但过期日期是1/1/0001 12:00:00 AM的默认日期值

【问题讨论】:

  • 参考您的第一个代码块:您应该读取/检索来自Request.Cookies 的cookie,而不是响应。
  • @Igor 我认为这实际上并不重要,因为无论如何属性都会被覆盖。如所写,我认为如果SetCookie 被多次调用,它会重用cookie 对象。就个人而言,我会完全删除检查并始终初始化一个新实例。
  • 您是否检查过任何更改到期日期的客户端代码,因为 cookie 可以在客户端更改,这可能是导致问题的原因。

标签: c# cookies setcookie httpcookie


【解决方案1】:

我相信过期是客户端的事情。浏览器应发送任何未过期的 cookie,但不发送过期日期(仅发送名称和值)。我认为您应该重新设置并刷新每个请求的到期时间。

这是我找到的第一个格式参考:https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cookie

如果出于某种原因您需要检索过期数据服务器端,我会将其包含在 cookie 内容中或设置辅助 cookie 以包含该信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多