我如何创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);