当Expires小于1年时,本地主机(Chrome和FF)无法设置cookie。

6

我在本地遇到了一个问题,在 ChromeFirefox 上出现,但是在 Edge 上没有出现。

这段代码将正常工作,并设置 cookie:

[HttpPost]
public ActionResult Change(string val)
{
    var cookie = new HttpCookie(CookieName) { Value = val, Expires = DateTime.Now.AddYears(1) };

    Response.Cookies.Add(cookie);

    return Content("");
}

然而,如果我将Expires更改为只有300天,则cookie不会在Request Cookies中返回(对于Change请求仍然可见在Response Cookies中)。

编辑: 该操作通过jquery ajax ($.post)调用; 大约半年前它可以工作。


这很奇怪,对我来说运行得很好: [HttpPost] public ActionResult Change(string val) { var cookie = new HttpCookie("myCookie") { Value = val, Expires = DateTime.Now.AddDays(300) }; Response.Cookies.Add(cookie); return Content(" a "); } public ActionResult Check() { var cookies = Request.Cookies; return View(); } - SamGhatak
那么您是否可以在仅使用上述方法的简单MVC应用程序中进行一致的重现?还是只有在更复杂的应用程序中才能实现? - Evk
@Evk 是的,在我的两个项目中,本地主机上也是这种行为;但在 Edge 上可以工作。 - Omu
1个回答

1

你是否尝试在本地主机上将cookie.Domain设置为null,然后在使用域名时再将其设置为相应的值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接