Cookie

一、简介

1.查看IE的Cookie文件保存位置:可通过注册表查看HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Cookies


2.Cookie是一小段文本信息,他是伴随用户请求在Web服务端和浏览器之间传递信息;

3.Cookie与站点关联,并不是与特定的页面关联,当用户请求不同站点时,各个站点的服务端都有可能像浏览器发送Cookie信息,浏览器分别存储各个站点的Cookie信息;

4.当用户请求站点时,浏览器变会在本地磁盘上查找与该站点(URL)相关联的Cookie信息,如果Cookie存在,浏览器便将该Cookie与页面请求一起发送给服务端;

5.大多数浏览器支持最大为4096字节(4M)的Cookie信息,由于这一限制,最好用Cookie来存储少量信息,如用户ID信息等;

6.大多数浏览器还会限制站点可以再用户计算器上存储Cookie的数量,一般浏览器只允许每个站点存储20个Cookie,还有一些浏览器限制所有站点存储Cookie的总数,通常为300;

7.由于用户可以设置浏览器拒绝接受Cookie,因此应用程序不应绝对依赖于Cookie,如果必须依赖于Cookie,则可以通过检查用户浏览器是否接受Cookie;

8.Cookie通过HttpResponse对象发送到浏览器,创建Cookie时必须制定Name和Value,每个Cookie必须有一个唯一的名称,由于Cookie按名称存储,用两个相同的名称创建Cookie时,会导致其中一个被覆盖;

9.创建Cookie时,如果没有设置有效期,Cookie将不会被保存到用户磁盘时,此时会将Cookie作为用户会话的一部分进行维护,当用户关闭浏览器时,Cookie便会被丢弃;

10.可以通过HttpRequest对象来读取Cookie,但无法通过HttpRequest对象获取返回的Cookie的有效期;

11.由于Cookie在用户的计算机上,因此无法将其直接移除,但是可以通过浏览器来将其删除。将Cookie的有效期设置为早于当前日期的某个日期,浏览器会自动清除已经过期的Cookie;

12.要想知道用户浏览器是否接受Cookie,可以编写一个测试Cookie,然后看是否能获取到该Cookie。

二、事例

    /// <summary>
    /// 页面基类,所有页面应继承该类
    /// </summary>
    public class TradePage : System.Web.UI.Page
    {
        #region Fields

        private const string gUserCookie = "USERNAME";
        private const string gPasswordCookie = "PASSWORD";
        private const string gCheckBox = "CHECKPASSWORD";

        #endregion

        #region Public Methods

        /// <summary>
        /// 设置Cookie
        /// </summary>
        /// <param name="strUser">用户名</param>
        /// <param name="strPassword">密码</param>
        public void SetCookie(string strUser, string strPassword)
        {
            //方式一添加Cookie
            HttpCookie pUserCookie = new HttpCookie(gUserCookie, strUser);
            pUserCookie.Expires = DateTime.Now.AddMonths(1);
            HttpCookie pPasswordCookie = new HttpCookie(gPasswordCookie, strPassword);
            pPasswordCookie.Expires = DateTime.Now.AddMonths(1);
            HttpCookie pCheckCookie = new HttpCookie(gCheckBox, "true");
            pCheckCookie.Expires = DateTime.Now.AddMonths(1);
            Response.Cookies.Add(pUserCookie);
            Response.Cookies.Add(pPasswordCookie);
            Response.Cookies.Add(pCheckCookie);

            方式二添加Cookie
            //HttpCookie pUserInfo = new HttpCookie("USERINFO");
            //pUserInfo.Expires = DateTime.Now.AddMonths(1);
            将Cookie限制到服务器上的Account文件夹,此时Cookie将只作用于Account文件夹下面的页面
            //pUserInfo.Path = "/Account";
            将Cookie限制到服务器上的某个域
            //pUserInfo.Domain = "support.contoso.com";
            //pUserInfo.Values[gUserCookie] = strUser;
            //pUserInfo.Values[gPasswordCookie] = strPassword;
            //pUserInfo.Values[gCheckBox] = "true";
            //Response.Cookies.Add(pUserInfo);

            方式三添加Cookie
            //Response.Cookies["USERINFO"][gUserCookie] = strUser;
            //Response.Cookies["USERINFO"][gPasswordCookie] = strPassword;
            //Response.Cookies["USERINFO"][gCheckBox] = "true";
            //Response.Cookies["USERINFO"].Expires = DateTime.Now.AddMonths(1);
        }

        /// <summary>
        /// 获取Cookie值
        /// </summary>
        /// <param name="strUserName">用户名</param>
        /// <param name="strPassword">密码</param>
        /// <param name="strCheck">是否选中</param>
        public void GetCookie(out string strUserName, out string strPassword, out string strCheck)
        {
            strUserName = Request.Cookies[gUserCookie] == null ? "" : Server.HtmlDecode(Request.Cookies[gUserCookie].Value);
            strPassword = Request.Cookies[gPasswordCookie] == null ? "" : Server.HtmlDecode(Request.Cookies[gPasswordCookie].Value);
            strCheck = Request.Cookies[gCheckBox] == null ? "false" : Server.HtmlDecode(Request.Cookies[gCheckBox].Value);

            SetCookie(strUserName, strPassword);
        }

        /// <summary>
        /// 清除Cookie
        /// </summary>
        public void ClearCookie()
        {
            if (Request.Cookies[gUserCookie] != null)
            {
                Response.Cookies[gUserCookie].Expires = DateTime.Now.AddMonths(-1);
            }
            if (Request.Cookies[gPasswordCookie] != null)
            {
                Response.Cookies[gPasswordCookie].Expires = DateTime.Now.AddMonths(-1);
            }
            if (Request.Cookies[gCheckBox] != null)
            {
                Response.Cookies[gCheckBox].Expires = DateTime.Now.AddMonths(-1);
            }
        }

        #endregion
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值