分享
 
 
 

ASP.NET中Cookie编程的基础知识(3)

王朝asp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

查看您的 Cookie

您可能会发现,了解创建 Cookie 的效果会对您很有帮助。而查看 Cookie 是比

较容易的,因为它们都是文本文件,关键在于您能找到它们。不同的浏览器保存

Cookie 的方式也不同。我将介绍 Internet Explorer 是如何保存 Cookie 的。如果您

使用的是其他浏览器,请查看该浏览器的帮助,以了解有关 Cookie 处理方面的知识。

查看 Cookie 的一个简便方法是让 Internet Explorer 为您查找。在 Internet

Explorer 中,从“工具”菜单中选择“Internet 选项”,在“常规”选项卡中单击“

设置”,然后单击“查看文件”。Internet Explorer 将打开一个窗口,显示所有的临

时文件,包括 Cookie。在窗口中查找以“Cookie:”开头的文件 或查找文本文件。双击

一个 Cookie,在默认的文本文件中打开它。

您也可以在硬盘上查找 Cookie 的文本文件,从而打开 Cookie。Internet

Explorer 将站点的 Cookie 保存在文件名格式为 <user>@<domain>.txt 的文件中,其

中 <user> 是您的帐户名。例如,如果您的名称为 mikepope,您访问的站点为

www.contoso.com,那么该站点的 Cookie 将保存在名为 mikepope@www.contoso.txt 的

文件中。(该文件名可能包含一个顺序的编号,如 mikepope@www.contoso[1].txt。)

这个 Cookie 文本文件是与用户相关的,所以会按照帐户分别保存。例如,在

Windows XP 中,您可以在如下所示的目录中找到 Cookie 文件:

c:\Documents and Settings\<user>\Cookies

要查找最新创建的 Cookie,可以按修改日期对目录内容进行排序,并查找最近修

改的文件。

您可以使用文本编辑器打开 Cookie。如果该文件包含多个 Cookie,这些

Cookie 之间将用星号 (*) 分隔。每个 Cookie 的第一行是 Cookie 的名称,第二行是

值,其余各行则包含 Cookie 的日常处理信息,例如过期日期和时间。Cookie 中还有一

个简单的校验和,如果更改 Cookie 名称或值的长度,浏览器就会检测到修改并删除该

Cookie。

多值 Cookie(子键)

以上示例为每个要保存的值(用户名、上次访问时间)都使用了一个 Cookie 。

您也可以在一个 Cookie 中保存多个名称/值对。名称/值对也称作“键”或“子键”,

具体取决于您读取的内容。(如果您熟悉 URL 的结构,就会发现子键与其中的查询字符

串非常相象。) 例如,如果不希望创建名为“userName”和“lastVisit”的两个单独

的 Cookie,可以创建一个名为“userInfo”的 Cookie,并使其包含两个子键:“userN

ame”和“lastVisit”。

有很多原因会让我们用子键来代替单独的 Cookie。最显而易见的是,把相关或类

似的信息放在一个 Cookie 中会比较有条理。另外,由于所有信息都在一个 Cookie 中

,所以诸如有效期之类的 Cookie 属性就适用于所有信息。(当然,如果要为不同类型

的信息指定不同的过期日期,就应该把信息保存在单独的 Cookie 中。)

带有子键的 Cookie 还可以帮助您减小 Cookie 的大小。如前面的 Cookie 的限

制一节所述,Cookie 的总大小限制在 4096 字节以内,而且不能为一个网站保存超过

20 个 Cookie。利用带子键的单个 Cookie,站点的 Cookie 数量就不会超过 20 个的限

制。此外,一个 Cookie 会占用大约 50 个字符的基本空间开销(用于保存有效期信息

等),再加上其中保存的值的长度,其总和接近 4K 的限制。如果使用五个子键而不是

五个单独的 Cookie,您可以省去四个 Cookie 的基本空间开销,总共能节省大约 200

个字节。

要创建带子键的 Cookie,您可以使用用于编写单个 Cookie 的各种语法。以下示

例显示了编写同一 Cookie 的两种不同方法,其中的每个 Cookie 都带有两个子键:

Response.Cookies("userInfo")("userName") = "mike"

Response.Cookies("userInfo")("lastVisit") = DateTime.Now.ToString

Response.Cookies("userInfo").Expires = DateTime.Now.AddDays(1)

Dim aCookie As New HttpCookie("userInfo")

aCookie.Values("userName") = "mike"

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 限制到服务器上的某个文件夹,请按如下方法设置 Cookie 的

Path 属性:

Dim appCookie As New HttpCookie("AppCookie")

appCookie.Value = "written " & Now.ToString

appCookie.Expires = Now.AddDays(1)

appCookie.Path = "/Application1"

Response.Cookies.Add(appCookie)

当然,您也可以通过直接设置 Response.Cookies 来编写 Cookie,如前文所述。

路径可以是站点根目录下的物理路径,也可以是虚拟根目录。这样一来,Cookie

就只能用于 Application1 文件夹或虚拟根目录中的页面。例如,如果您的站点名为

www.contoso.com,则前面示例中生成的 Cookie 就只能用于路径为

http://www.contoso.com/Application1/ 的页面以及该文件夹下的所有页面,而不适用

于其他应用程序中的页面,如 http://www.contoso.com/Application2/

http://www.contoso.com/ 下的页面。

提示:通过对 Internet Explorer 和 Mozilla 浏览器进行测试发现,此处使用

的路径是区分大小写的。一般而言,Windows 服务器上的 URL 不区分大小写,但这种情

况例外。您无法控制用户如何在浏览器中输入 URL,但是,如果您的应用程序依赖于与

特定路径相关的 Cookie,则请确保您所创建的所有超链接中的 URL 与 Path 属性值的

大小写相匹配。

将 Cookie 的有效范围限制到域

默认情况下,Cookie 与特定的域相关联。例如,如果您的站点是

www.contoso.com,那么当用户向该站点请求页面时,您编写的 Cookie 就被发送到服务

器。(有特定路径值的 Cookie 除外,我在上一节刚刚解释过。) 如果您的站点有子域

(例如 contoso.com、sales.contoso.com 和 support.contoso.com),就可以把

Cookie 同特定的子域相关联。为此,需要设置 Cookie 的 Domain 属性,如下所示:

Response.Cookies("domain").Value = DateTime.Now.ToString

Response.Cookies("domain").Expires = DateTime.Now.AddDays(1)

Response.Cookies("domain").Domain = "support.contoso.com"

如果按照这种方式设置域,则 Cookie 只能用于指定子域中的页面。

您也可以利用 Domain 属性来创建可在多个子域中共享的 Cookie。例如,对域进

行如下设置:

Response.Cookies("domain").Value = DateTime.Now.ToString

Response.Cookies("domain").Expires = DateTime.Now.AddDays(1)

Response.Cookies("domain").Domain = "contoso.com"

这样,该 Cookie 就可用于主域、sales.contoso.com 和 support.contoso.com

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有