【问题标题】:Cookie gets deleted right awayCookie 立即被删除
【发布时间】:2014-05-12 05:24:14
【问题描述】:

我将访问令牌添加到用户 cookie,当我第一次检查它是否仍然存在时,它是。但下次我再找它时,它就不存在了。当我从 cookie 中获取它时,它会被删除吗?还是我做错了什么?

这就是我添加 cookie 的方式:

        HttpCookie cookie = new HttpCookie(key);
        cookie.Expires = DateTime.Now.AddMinutes(10);       
        HttpContext.Current.Request.Cookies.Add(cookie);

【问题讨论】:

  • 我不是 100% 确定这一点,但您是否尝试过使用 DateTime.UtcNow.AddMinutes(10) 而不是使用本地时区?
  • @KaiEichinger 是的,我查看了 cookie 属性,它说从我查看的时间开始大约 30 分钟。我发现了这个:stackoverflow.com/questions/7510327/…,所以我想我将无法修复它。

标签: c# asp.net-mvc cookies


【解决方案1】:

你只是犯了一个小错误,添加 cookie 使用 Response 而不是 Request

更正的代码:

 HttpCookie cookie = new HttpCookie(key);
 cookie.Value = value;
 cookie.Expires = DateTime.Now.AddMinutes(10);
 HttpContext.Current.Response.Cookies.Add(cookie);

【讨论】:

  • 并获取 cookie?同一个系列?
  • 你获取cookie的方法是正确的,问题只是添加cookie..:)
【解决方案2】:

出于安全原因,您只能读取由页面设置的 cookie 属于同一域的一部分。如果 cookie 的 Path 属性有 已设置,该 cookie 仅可用于其中的页面和子文件夹 域的路径。

http://msdn.microsoft.com/en-us/library/bd70eh18%28v=vs.100%29.aspx

您可能会检查您是否尝试从与设置不同的页面读取 cookie。

另请参阅此页面:http://msdn.microsoft.com/en-us/library/system.web.httprequest.cookies%28v=vs.110%29.aspx

ASP.NET 包含两个内在的 cookie 集合。该系列 通过 Cookies 集合访问的 HttpRequest 包含 客户端在 Cookie 标头中传输给服务器的 cookie。 通过HttpResponse的Cookies集合访问的集合 包含在服务器上创建并传输到 客户端在 Set-Cookie 标头中。

使用 HttpResponse.Cookies 集合添加 cookie 后, cookie 在 HttpRequest.Cookies 中立即可用 集合,即使响应尚未发送到客户端。

您正在请求集合中设置 Cookie,然后尝试将其读回。也许您应该尝试从 Response.Cookies 集合中读取它?

即改变

HttpCookie cookie = HttpContext.Current.Request.Cookies[key];

HttpCookie cookie = HttpContext.Current.Response.Cookies[key];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-06
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多