如何创建持久性cookie与非持久性cookie?
Cookie有一个到期日期隐式或显式设置,控制它们持续多久(受用户代理实际执行)。 Cookie只能在会话期间(或更短的时间)持续存在。
如果一个cookie有效,它将与HTTP请求一起传递到它所源自的域。只有设置cookie的域才可以读取cookie(尽管有许多方法可以利用此功能,例如跨站点脚本)。
如果你想有一个cookie来在特定时间到期,使用客户端或您选择的服务器端语言设置它的到期日期 。
如果您希望Cookie在会话结束时过期,请不要设置 到期日期。
该Cookie设置器可以指定一个 删除日期,在这种情况下 cookie将在该日期被去除。
如果cookie设置器未指定日期,则在用户退出其浏览器后删除cookie。
因此,指定日期是 使Cookie在整个 会话期间生存的一种方式。 因此,带有过期日期的Cookie 被称为 持久性。
作为一个示例应用程序, 一个购物网站可以使用持久 Cookie存储用户 放置在其篮中的物品。 (在现实中, cookie的可参考的条目存储在购物网站 数据库, 不是您的计算机上。)这样,如果 用户放弃他们的浏览器,而 进行购买,稍后再回来, 他们仍然找到 购物篮中的相同商品,以便他们不必再次查找 这些商品。如果这些Cookie 未提供到期日期,则 将在浏览器关闭 时终止,并且有关 购物篮内容的信息将丢失。
会话cookie
HttpCookie cookie = new HttpCookie("myCookieName", "myCookieValue");
Response.Cookies.Add(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饼干
持久性曲奇:
曲奇存储在您的计算机硬盘上。它们保留在硬盘上,可以通过网络服务器访问,直到它们被删除或过期。
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只会保存。只有在关闭浏览器之前,它们才能被Web服务器使用。它们不保存在磁盘上。
public void SetNonPersistentCookies(string name, string value)
{
HttpCookie cookie = new HttpCookie(name);
cookie.Value = value;
Response.Cookies.Add(cookie);
}
如果我只想让cookie保持会话,我应该设置什么过期时间? – 2010-10-06 17:53:54
请参阅我的编辑。 – 2010-10-06 18:34:40
谢谢!这是否意味着任何没有expires子句的Set-Cookie都将是一个会话cookie,并且一旦浏览器重新启动就会丢失?因为这不是我所看到的......一旦我没有过期地执行Set-Cookie,并重新启动浏览器,我仍然可以读取该cookie。这是预期的吗? – 2010-10-06 19:00:43