ASP.NET Cookie 操作实现(2)


Response.Cookies["userName"].Value = "patrick";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie = new HttpCookie("lastVisit");
aCookie.Value = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);



此示例向 Cookies 集合添加两个 Cookie,一个名为 userName,另一个名为 lastVisit。对于第一个 Cookie,Cookies 集合的值是直接设置的。可以通过这种方式向集合添加值,因为 Cookies 是从 NameObjectCollectionBase 类型的专用集合派生的。

对于第二个 Cookie,代码创建了一个 HttpCookie 类型的对象实例,设置其属性,然后通过 Add 方法将其添加到 Cookies 集合。在实例化 HttpCookie 对象时,必须将该 Cookie 的名称作为构造函数的一部分进行传递。

这两个示例都完成了同一任务,即向浏览器写入一个 Cookie。在这两种方法中,有效期值必须为 DateTime 类型。但是,lastVisited 值也是日期时间值。因为所有 Cookie 值都存储为字符串,因此,必须将日期时间值转换为 String。

多值 Cookie
可以在 Cookie 中存储一个值,如用户名和上次访问时间。也可以在一个 Cookie 中存储多个名称/值对。名称/值对称为子键。(子键布局类似于 URL 中的查询字符串。)例如,不要创建两个名为 userName 和 lastVisit 的单独 Cookie,而可以创建一个名为 userInfo 的 Cookie,其中包含两个子键 userName 和 lastVisit。

您可能会出于多种原因来使用子键。首先,将相关或类似的信息放在一个 Cookie 中很方便。此外,由于所有信息都在一个 Cookie 中,所以诸如有效期之类的 Cookie 属性就适用于所有信息。(反之,如果要为不同类型的信息指定不同的到期日期,就应该把信息存储在单独的 Cookie 中。)

带有子键的 Cookie 还可帮助您限制 Cookie 文件的大小。正如前面“Cookie 的限制”一节中所提到的,Cookie 通常限制为 4096 字节,并且每个站点最多可存储 20 个 Cookie。使用带子键的单个 Cookie,使用的 Cookie 数就不会超过分配给站点的 20 个的限制。此外,一个 Cookie 会占用大约 50 个字符的系统开销(用于保存有效期信息等),再加上其中存储的值的长度,其总和接近 4096 字节的限制。如果存储五个子键而不是五个单独的 Cookie,便可节省单独 Cookie 的系统开销,节省大约 200 字节。

若要创建带子键的 Cookie,您可以使用编写单个 Cookie 的各种语法。下面的示例演示用于编写同一 Cookie 的两种方法,其中的每个 Cookie 都带有两个子键:


复制代码 代码如下:


Response.Cookies["userInfo"]["userName"] = "patrick";
Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();
Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie = new HttpCookie("userInfo");
aCookie.Values["userName"] = "patrick";
aCookie.Values["lastVisit"] = DateTime.Now.ToString();
aCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);


控制 Cookie 的范围
默认情况下,一个站点的全部 Cookie 都一起存储在客户端上,而且所有 Cookie 都会随着对该站点发送的任何请求一起发送到服务器。也就是说,一个站点中的每个页面都能获得该站点的所有 Cookie。但是,可以通过两种方式设置 Cookie 的范围:

将 Cookie 的范围限制到服务器上的某个文件夹,这允许您将 Cookie 限制到站点上的某个应用程序。

将范围设置为某个域,这允许您指定域中的哪些子域可以访问 Cookie。

将 Cookie 限制到某个文件夹或应用程序
若要将 Cookie 限制到服务器上的某个文件夹,请按下面的示例设置 Cookie 的 Path 属性:

复制代码 代码如下:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjjpjs.html