![ASP.NET从入门到精通(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/771/27111771/b_27111771.jpg)
2.5 Cookie对象
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P58_14706.jpg?sign=1739503691-x9kkRC8JPr6jSARnMsOdaTnYPtxkChOR-0-a1e99c26bb39ee8acbfe50df428b94ca)
视频讲解
2.5.1 Cookie对象概述
Cookie对象用于保存客户端浏览器请求的服务器页面,也可用它存放非敏感性的用户信息,信息保存的时间可以根据用户的需要进行设置。并非所有的浏览器都支持Cookie,并且数据信息是以文本的形式保存在客户端计算机中的。
2.5.2 Cookie对象的常用属性和方法
Cookie对象的常用属性及说明如表2.13所示。
表2.13 Cookie对象的常用属性及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T58_14717.jpg?sign=1739503691-1Pbe0vIL2RDFpnjkhhZjakMwswMPx9HN-0-e38df250898e021ef4ccd8680fbff366)
Cookie对象的常用方法及说明如表2.14所示。
表2.14 Cookie对象的常用方法及说明
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T58_14719.jpg?sign=1739503691-9VQcWKfIFLPPPWYHgyeibIFd9bocE1AY-0-5e82cab0e2a4ca4f8fff97228334235f)
2.5.3 使用Cookie对象保存和读取客户端信息
要存储一个Cookie变量,可以通过Response对象的Cookies集合来实现,其语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P59_86426.jpg?sign=1739503691-9lMxZx77LZewbyz3ocD9LZdlwsiR3bAx-0-40c9c08dffdc3ae4825040d335d48144)
其中,varName为变量名。
要取回Cookie,可使用Request对象的Cookies集合,并将指定的Cookies集合返回,其语法如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P59_86427.jpg?sign=1739503691-x35KyRahQPKlEIIRn3xIkLCVdWGZ20gM-0-7780bc6b084664e8cb94c2c83d1220b8)
【例2.9】使用Cookie对象保存和读取客户端信息。(示例位置:mr\TM\02\09)
下面的示例分别通过Response对象和Request对象的Cookies属性将客户端的IP地址写入Cookie中并读取出来。执行程序,示例运行结果如图2.10所示。
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P59_11824.jpg?sign=1739503691-B2G5MU1JkU756jyOLlRJdOvGBLOgkFVr-0-9f6ded36c2f1d9849897aec785c86bdf)
图2.10 Cookie示例
程序实现的主要步骤如下。
新建一个网站,默认主页为Default.aspx,在Default.aspx页面上添加1个Label控件和2个Button控件,它们的属性设置如表2.15所示。
表2.15 Default.aspx页面中的控件属性设置及用途
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-T59_86428.jpg?sign=1739503691-L5M5KlVDfP0Mv6h1cLPtv9yd3N52pPSK-0-c7d67422da8822781f77e681c4ae7b65)
单击“将用户IP写入Cookie”按钮,将触发按钮的Click事件。在该事件中首先利用Request对象的UserHostAddress属性获取客户端IP地址,然后将IP保存到Cookie中。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P59_86429.jpg?sign=1739503691-M5y3ldMRiugWbK6MeVm2jD7LiPUBXwuj-0-ca40703faa5ee18ffc93c2b0aa7cebe6)
单击“将用户IP从Cookie中读出”按钮,从Cookie中读出写入的IP。代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P59_86430.jpg?sign=1739503691-U8BbyHOs78nVHdqf9q4tVNhbS13QWhNi-0-1155fd424aa91238dee7c84b3cfa95d9)
由于Cookie对象可以保存和读取客户端的信息,用户可以通过它对登录的客户进行标识,防止用户恶意攻击网站。例如,在线投票中,可以使用Cookie防止用户重复投票,详细介绍请参见第21章。
技巧
1. 对Cookie中的数据加密
为了避免用户信息被他人窃取,增强网站的安全性,通常需要对Cookie中的数据进行加密。加密代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P60_90504.jpg?sign=1739503691-UKLEIG4Yl2GySVdXfLztInhy6SWL3IoU-0-c3c9f3919d7aa46725a7d76f2b1be15f)
2. 创建及存取多个键值的Cookie对象
使用Response对象可以创建多个数据值的Cookie,其语法格式如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P60_90506.jpg?sign=1739503691-0ftZWTtvG4TXgkGeKOGKS5FkTwzOZdD4-0-73d3a114d0ce3d458a140618205ff195)
例如,使用Response对象的Cookie集合保存用户登录名和密码,其代码如下:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P60_90508.jpg?sign=1739503691-gv5z2tvnxYRH3VDcatT8TjfdvI2nBkoE-0-712db12ebde2810a5bd53f54404eb9d4)
3. 设定Cookie变量的生命周期
虽然Cookie对象变量是存放在客户端计算机上的,但也不是永远不会消失。设计人员可以在程序中设定Cookie对象的有效日期,使用的语法为:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P60_90510.jpg?sign=1739503691-FP2CKlZbsLFyRHZv9w4dFuR8Ll3TYgww-0-da318d8c9bbd71a5b6cfe203d76f9f69)
如果没有指定Expires属性,Cookie变量将不会被保存,当关闭浏览器时,Cookie变量也会随之消失。
下面的程序片段演示了几种设定有效期的方法:
![](https://epubservercos.yuewen.com/745A13/15477657604593106/epubprivate/OEBPS/Images/Figure-P60_90512.jpg?sign=1739503691-MV1gMQ1w6PfnqpWd2Vaso5jDPLR0RM6X-0-41f6eb8616f7b846348a38e8debff30d)