【发布时间】:2011-04-21 15:41:35
【问题描述】:
我似乎无法弄清楚如何创建持久性和非持久性 cookie。例如,它们在发回的 HTTP 标头方面有何不同?
【问题讨论】:
我似乎无法弄清楚如何创建持久性和非持久性 cookie。例如,它们在发回的 HTTP 标头方面有何不同?
【问题讨论】:
Cookie 有一个隐式或显式设置的过期日期,用于控制它们的持续时间(取决于用户代理实际执行的时间)。 cookie 可能仅在会话期间(或什至更短的时间)持续存在。
如果 cookie 有效,它将与 HTTP 请求一起传递到它所源自的域。只有设置 cookie 的域才能读取 cookie(尽管有一些方法可以利用它,例如跨站点脚本)。
如果您希望 cookie 在特定时间过期,请设置过期时间 使用您选择的客户端或服务器端语言在其上注明日期。
如果您希望 cookie 在会话结束时过期,请不要设置 到期日期。
cookie 设置器可以指定一个 删除日期,在这种情况下 cookie 将在该日期被删除。
如果 cookie 设置器没有指定 一个日期,cookie 被删除一次 用户退出他或她的浏览器。
因此,指定日期是一种 让饼干生存下来 会议。 因此,cookie 有到期日期的被称为 持久。
作为示例应用程序, 购物网站可以使用持久化 用于存储用户拥有的项目的 cookie 放在他们的篮子里。 (事实上, cookie 可能指的是 存储在购物网站的数据库, 不在您的计算机上。)这样,如果 用户退出浏览器 购买并稍后退货, 他们仍然在 篮子,所以他们不必寻找 这些项目再次。如果这些 cookie 没有给出到期日期, 当浏览器运行时,它们会过期 关闭,以及有关的信息 购物篮内容会丢失。
【讨论】:
会话 cookie
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
Response.Cookies.Add(cookie);
带有特定时间戳的 Cookie (.NET DateTime library)
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
cookie.Expires = DateTime.Today.AddMonths(12); //or AddMinutes, or AddHours...
Response.Cookies.Add(cookie);
持久性 Cookie
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
cookie.Expires = DateTime.MaxValue;
Response.Cookies.Add(cookie);
【讨论】:
在 ASP.NET 中有两种类型的 cookie
持久性 cookie:
Cookie 存储在您的计算机硬盘上。它们保留在您的硬盘上,并且可以被 Web 服务器访问,直到它们被删除或过期。
public void SetPersistentCookies(string name, string value)
{
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
cookie.Expires = Convert.ToDateTime(“12/12/2008″);
Response.Cookies.Add(cookie);
}
非持久性 cookie:
Cookie 仅在您的网络浏览器运行时保存。只有在您关闭浏览器之前,它们才能被 Web 服务器使用。它们没有保存在您的磁盘上。
public void SetNonPersistentCookies(string name, string value)
{
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
Response.Cookies.Add(cookie);
}
【讨论】:
持久性 cookie 具有由网络发布的到期日期 服务器。基本上,这种类型的 cookie 保存在您的计算机上,因此 当您关闭它并再次启动它时,cookie 仍然存在。 一旦到达到期日期,它就会被所有者销毁。
参考:https://www.cookiepro.com/knowledge/what-is-a-persistent-cookie/
如果 cookie 不包含过期日期,则将其视为会话/非持久性 cookie。
因此,基本上持久性 cookie 带有 expires 属性,例如
expires="Wdy, DD-Mon-YYYY HH:MM:SS GMT"
【讨论】: