我如何创build一个持久性cookie与非持久性cookie?

我似乎无法弄清楚如何创build一个持久的cookie与一个非持久的cookie。 他们在发送的HTTP头中有什么不同呢?

Cookie有一个到期date的隐式或显式设置,控制它们持续多久(受用户代理实际执行)。 一个cookie可能只会持续一段时间(或更短的时间)。

如果cookie有效,它将与HTTP请求一起传递到源自它的域。 只有设置cookie的域可以读取cookie(尽pipe有许多方法可以利用这个,比如跨站脚本)。

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

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

从RFC(强调我的):

cookie设置者可以指定删除date,在这种情况下,cookie将在该date被删除。

如果cookie设置器没有指定date,那么一旦用户退出浏览器,cookie将被删除。

因此,指定date是使Cookie在各个会话中生存的一种方法。 出于这个原因,有过期date的cookie被称为持久性的。

作为示例应用程序,购物网站可以使用永久性cookie来存储用户放入购物篮的物品。 (实际上,cookie可能指的是存储在购物网站的数据库中的一个条目,而不是在您的计算机上。)这样,如果用户退出浏览器而不进行购买并稍后返回,他们仍然会在所以他们不必再去寻找这些物品。 如果这些cookie没有过期date,则当浏览器closures时,它们将过期,并且关于购物篮内容的信息将会丢失。

ASP.NET中有两种types的Cookie

持久性Cookie:

Cookies存储在您的电脑硬盘上。 他们留在您的硬盘上,可以通过networking服务器访问,直到他们被删除或过期。

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); } 

非持久性cookies:

Cookie只有在您的网页浏览器正在运行时才会保存。 只有在closures浏览器之前,它们才能被Web服务器使用。 它们不保存在您的磁盘上。

 public void SetNonPersistentCookies(string name, string value) { HttpCookie cookie = new HttpCookie(name); cookie.Value = value; Response.Cookies.Add(cookie); } 

会话cookie

 HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue"); Response.Cookies.Add(cookie); 

具有一定时间戳的Cookie( .NET DateTime库 )

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