如何创建持久性cookie和非持久性cookie?

时间:2010-10-06 05:57:55

标签: http cookies

我似乎无法弄清楚如何创建持久性cookie和非持久性cookie。例如,它们在发回的HTTP标头中有何不同?

4 个答案:

答案 0 :(得分:70)

Cookie会隐式或显式设置过期日期,以控制它们持续多长时间(取决于用户代理实际执行它)。 Cookie可能仅在会话期间(或更短的时间段)持续存在。

如果cookie有效,它将与HTTP请求一起传递到它所源自的域。只有设置cookie的域才能读取cookie(尽管有办法利用它,例如跨站点脚本)。

  • 如果您希望Cookie在特定时间到期,请设置到期日期 使用您选择的客户端或服务器端语言在其上使用日期。

  • 如果您希望Cookie在会话结束时过期,请不要设置 到期日。

From the RFC (emphasis mine):

  

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

的Cookie
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);

答案 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"