【发布时间】:2017-05-26 01:06:00
【问题描述】:
这个简单的代码让我感到困惑。
通过这个控制器操作方法,我创建了一个 cookie,给它一个过期时间并将它设置为 HttpOnly。 cookie 被正确创建,添加到响应中,在浏览器调试器上看起来是正确的,但是在刷新后返回到相同的代码中时,会丢失过期和 HttpOnly 标志。 cookie 本身仍然存在,但值丢失了。如果我在访问浏览器后将 Request.Cookies["mycookie"] 看回到同一个控制器/操作方法中,那么值就消失了——尽管 cookie 本身并没有被删除。
如果有人理解这种行为,请解释一下,这里可能会发生什么-
public class HomeController : Controller
{
public ActionResult Index()
{
if (this.ControllerContext.HttpContext.Request.Cookies["mycookie"] == null)
{
HttpCookie cookie = Response.Cookies["mycookie"];
cookie["mycookie"] = "test";
cookie.Expires = DateTime.Now.AddDays(90);
cookie.HttpOnly = true;
this.ControllerContext.HttpContext.Response.SetCookie(cookie);
}
return View();
}
【问题讨论】:
标签: c# asp.net asp.net-mvc cookies asp.net-mvc-5