【问题标题】:Change value of an existing Cookie [duplicate]更改现有 Cookie 的值 [重复]
【发布时间】:2018-06-30 20:44:08
【问题描述】:

我正在尝试修改我的 cookie 的值,但它没有修改而是追加了。我做错了什么?

目前,SkillId cookie 包含 112 的值,我想用我的变量 qualifyBySkill 中的任何值来更新它的值。

string qualifyBySkill = "189";
HttpCookie cookie = Request.Cookies["SkillId"];
if (cookie != null)
{
    cookie.Values["SkillId"] = qualifyBySkill;
}
cookie.Expires = DateTime.UtcNow.AddDays(1);
Response.Cookies.Add(cookie);

发生的情况是,在这段代码之后,它在 Value 中设置 112&SkillId=189 而不是 189。我做错了什么?

【问题讨论】:

  • @mai 我的问题不一样。

标签: c# asp.net-mvc cookies


【解决方案1】:

在考虑 cookie 时,记住 cookie 仅由浏览器创建和存储会很有帮助。它们不会在浏览器和服务器之间来回传递。

Request.Cookies 包含浏览器发送的 cookie 标头列表,通知服务器存在 cookie 子集;它们不是真正的 cookie,实际上缺少正常 cookie 记录中包含的大部分信息(例如域和路径)。

Response.Cookies 仅包含 set-cookie 标头,要求浏览器创建 cookie。此列表通常为空。

要更改浏览器上的 cookie,服务器必须设置新的 cookie 标头。重要的词是new

string qualifyBySkill = "189";
var cookie = new HttpCookie("SkillId", qualifyBySkill);
cookie.Expires = DateTime.UtcNow.AddDays(1);
Response.Cookies.Add(cookie);

【讨论】:

  • 现有的 cookie 也是如此吗?
  • 我编辑了我的答案来解释。
猜你喜欢
  • 2015-02-07
  • 1970-01-01
  • 2013-07-30
  • 2011-11-18
  • 2014-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多