ASP.NET Core MVC (.NET Framework) 写入、读取和更新 cookies

3
我正在使用 Cookies 在我的 ASP.NET Core MVC(.NET Framework)应用程序中。我尝试在客户端浏览器会话期间保持对象值,希望读取、写入和更新该值。
为了序列化和反序列化我的对象,我使用 System.Web.Script.Serialization命名空间下的 JavascriptSerializer 类,并使用 Microsoft.ASPNetCore.Http 命名空间下的 HttpResponse 和 HttpRequest 类来处理 Cookie。
我可以读取 Cookie 然后将其反序列化到我的对象,或者将我的对象序列化然后写入 Cookie。但是我不能更新 Cookie,因为 Response.Cookies 对象不允许我更新现有的 Cookie。于是我删除了 Cookie 并将其附加到 Response.Cookies 对象,这样做虽然起作用,但并不是真正意义上的 "cookie 更新"!那么,在 MVC6 应用程序中是否有其他方式可以更新 Cookie,而无需将其删除?
2个回答

6

Cookie无法被更新,也无法被删除。这不是MVC的问题,而是关于Cookie的事实,请参见https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies:服务器唯一能对Cookie进行的操作是设置它。或许将Cookie视为属于浏览器而非服务器会更有帮助。

  • 要更新Cookie,您需要用新值覆盖它。
  • 要删除Cookie,您需要将其过期时间设置为昨天。

在浏览器中,您可以看到重新附加新值到Cookie会产生您想要的效果:浏览器会获得新值。例如:

服务器端:

HttpContext.Response.Cookies.Append("key", "value set at " + DateTime.Now.TimeOfDay);

以及客户端:

document.writeln(document.cookie);
console.log("document.cookie", document.cookie);

2
现在,HttpContext.Response.Cookies 上也有一个删除方法,使得删除 cookie 更加容易。 - baywet

-1

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