我似乎无法弄清楚如何创建持久性cookie和非持久性cookie。例如,它们在发回的HTTP标头中有何不同?
答案 0 :(得分:70)
Cookie会隐式或显式设置过期日期,以控制它们持续多长时间(取决于用户代理实际执行它)。 Cookie可能仅在会话期间(或更短的时间段)持续存在。
如果cookie有效,它将与HTTP请求一起传递到它所源自的域。只有设置cookie的域才能读取cookie(尽管有办法利用它,例如跨站点脚本)。
如果您希望Cookie在特定时间到期,请设置到期日期 使用您选择的客户端或服务器端语言在其上使用日期。
如果您希望Cookie在会话结束时过期,请不要设置 到期日。
cookie setter可以指定一个 删除日期,在这种情况下 cookie将在该日期删除。
如果cookie设置器未指定 一个日期,cookie一旦被删除 用户退出浏览器。
因此,指定日期是一种方式 让饼干生存下来 会话。 因此,cookies 调用有效期 持久性。强>
作为示例应用, 购物网站可以使用持久性 用于存储用户拥有的项目的cookie 放在他们的篮子里。 (事实上, cookie可以指代a中的条目 存储在购物网站的数据库, 不在你的电脑上。)这样,如果 用户退出浏览器没有 购买并稍后返回, 他们仍然在中找到相同的物品 篮子,所以他们不必寻找 再次这些项目。如果这些饼干 未给出失效日期, 它们会在浏览器到期时到期 关闭,以及有关的信息 篮子内容将丢失。
答案 1 :(得分:10)
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);
}
答案 2 :(得分:6)
会话Cookie
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
Response.Cookies.Add(cookie);
带有特定时间戳(.NET DateTime library)
的CookieHttpCookie 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);
答案 3 :(得分:0)
永久性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"