COOKIE用法

Response对象和Request对象分别是包含HttpResponse和HttpRequest类实例的页面的属性
        Request.cookie        //将COOKIE发送给服务端

        Response.cookie       //将COOKIE保存在客户机

概念:yourCookieObj:对象实例名
            yourCookieName:对象名

一、创建COOKIE

        1.1、创建Cookie对象
                HttpCookie yourCookieObj= new HttpCookie("yourCookieName") ;  //定义cookie对象与名称
                yourCookieObj.Expires = DateTime.Now.AddDays(1) ;   //因为要有Expires的设置,才会存到客户机的硬盘上
                Response.Cookies.Add(yourCookieObj);       //确定写入客户机cookie中 
                另一种方法:不需要建立对象实例(在简单应用时更方便)
                       Response.Cookies["yourCookieName"].Expires = DateTime.Now.AddDays(1) ;  
                       Response.Cookies.Add(Response.Cookies["yourCookieName"]); 
                       因为:“Response.Cookies["yourCookieName"]”其实就是一个只由对象名表示(非实例化)的对象。

        1.2、给整个对象赋值
                1.2.1、yourCookieObj.Value = "Cookie对象内容";   
                1.2.2、Response.Cookies["yourCookieName"].Value = "Cookie对象内容";   
                1.2.3、也可以在创建对象时直接赋值
                            HttpCookie yourCookieObj= new HttpCookie("yourCookieName","Cookie对象内容") ;

        1.3、给子键赋值
                 1.3.1、yourCookieObj.Values["yourCookieKey1"] = "Key内容1";        //增加第一个键
                             yourCookieObj.Values["yourCookieKey2"] = "Key内容2";      //增加第三个键
                             yourCookieObj["yourCookieKey3"] = "Key内容3";    //增加第三个键。.Values可以省略掉

                 1.3.2、Response.Cookies["yourCookieName"]["yourCookieKey1"]="Key内容1"
                             Response.Cookies["yourCookieName"]["yourCookieKey2"]="Key内容2"

二:有效时间

        2.1、永久有效
                yourCookieObj.Expires = DateTime.MaxValue;
                或:yourCookieObj.Expires = DateTime.Now.AddYears(50) ;  

        2.2、定义具体过效时间
                2.2.1、yourCookieObj.Expires = DateTime.Now.Add年/天/时/分/秒() ;  

                2.2.1、DateTime dt = DateTime.Now;        //定义时间对象
                            TimeSpan ts=new TimeSpan(1,0,0,0);        //定义时间间隔,查msdn  (天,时,分,秒)
                            yourCookieObj.EXPires = dt.Add(ts);        //添加作用时间(时间对象Add时间间隔)

        2.3、如果没有设置 Cookie 的有效期,它不会保存到用户的硬盘上,
                而是会成为用户会话信息的一部分。如果用户关闭浏览器或会话超时,该 Cookie 就会被删除。

三:域

        3.1、yourCookieObj.Domain="域"
                这个很重要,当你在“aaa.qy21.com”建立COOKIE时,在“bbb.qy21.com”是无效的。
                如果我们在“aaa.qy21.com”设了yourCookieObj.Domain="qy21.com";
                        那么这个Cookie对象在“bbb.qy21.com”(也包括qy21.com的所有子域)都有效了!

四:读取

        4.2、HttpCookie yourCookieObj=Request.Cookies["yourCookieName"]; 
                                                                        //把客户机名为yourCookieName的Cookie对象赋给新建的对象实例

        4.1、yourCookieObj.属性   //属性如:Value、Values、Domain等等,只有Expires读不了
                 或:Request.Cookies["yourCookieName"].属性   //属性如:Value

        4.2、读取子建值

                4.2.1、string str1 = Request.Cookies["yourCookieName"]["yourCookieKey1"]; //读到的是:"Key内容1"
                            string str2 = Request.Cookies["yourCookieName"]["yourCookieKey2"];  //读到的是:"Key内容2"
                            string str3 = Request.Cookies["yourCookieName"].Value;
                                                                //  读到Cookie对象内容:"yourCookieKey1=内容1&yourCookieKey2=内容2"

                4.2.2、也可以先获取子键集合
                             System.Collections.Specialized.NameValueCollection
                                             yourCookieKeyValues = Request.Cookies["yourCookieName"].Values;
                            string str1 = yourCookieKeyValues ["yourCookieKey1"];
                            string str2 = yourCookieKeyValues ["yourCookieKey2"];

五:删除

        5.1、删除整个COOLIE对象
                yourCookieObj.Expires = DateTime.MinValue    //把时间设为过期时间就可以了
                或:yourCookieObj.Expires= DateTime.Now.AddDays(-1) ;

        5.2、删除某个子键
                 HttpCookie yourCookieObj= Request.Cookies["yourCookieName"];   
                 yourCookieObj.Values.Remove("yourCookieKey1");    //要删除的子键yourCookieKey1
                 yourCookieObj.Expires = DateTime.Now.AddDays(1) ;
                 Response.Cookies.Add(yourCookieObj);       //确定写入cookie中
 

六:修改与应用

        6.1、

        6.2、修改、追加、删除子键(假设原来已经有3个子键)
                HttpCookie yourCookieObj= Request.Cookies["yourCookieName"];
                yourCookieObj["yourCookieKey1"] = "Key内容111";    //修改子键
                yourCookieObj["yourCookieKey4"] = "Key内容4";    //添加子键
                yourCookieObj.Values.Remove("yourCookieKey3");   //删除子键
                yourCookieObj.Expires = DateTime.Now.AddDays(1);   
                Response.Cookies.Add(yourCookieObj);


其它:一、限制:

        1.1、浏览器限制每个域只能放20个Cookie对象

        1.2、一些浏览器限制所有域总共只能放300个Cookie对象

        1.3、每个Cookie对象的value值的大小限制在4K:
                经过IE测试:是限制在Cookie对象的Value字符串值为5054字节
                                        如果有“键(KEY)”时,连“键名”、“=”、“&”都算在5054个字节中。

                                        也就是可以放5054个纯英文或数字
                                        但汉字可能乱码,所以必须经过编码,不同的编码,占字节是不一样的:|
                                        *.1、HttpUtility.UrlEncode编码(由HttpUtility.UrlDecode解码)
                                                    每个汉字编码后是9个字节,所以实际上只能放561个汉字。
                                        *.2、HttpUtility.UrlEncodeUnicode编码(由HttpUtility.UrlDecode解码)
                                                    每个汉字编码后是6个字节,所以实际上只能放842个汉字。(推荐使用)
                                        *.3、HttpUtility.HtmlEncode 在某些方式查看还会乱码,不建议使用。

其它:二、汉字乱码

        2.1、通过HttpUtility.UrlEncodeUnicode编码,通过HttpUtility.UrlDecode解码
                如:写:Response.Cookies["yourCookieName"].Value = HttpUtility.UrlEncodeUnicode("内容");
                        读:HttpUtility.UrlDecode(Request.Cookies["yourCookieName"].Value)

其它:三、注意:

        3.1、给COOKIE赋值时,应该给“=”、“&”进行语义转化

<think>好的,我现在需要帮助用户了解cookie的基本用法、语法和场景。首先,我需要回忆之前学过的相关知识,并结合提供的引用内容来组织回答。 用户的问题是关于如何使用cookie及其基本语法和场景。根据引用内容,特别是引用[2]和引用[3],cookie是通过HTTP头在客户端和服务器之间传递的,也可以通过JavaScript的document.cookie属性来操作。需要先解释cookie的基本概念,然后分别说明服务器端和客户端的设置方法。 首先,我应该介绍cookie的作用,比如保持用户状态、跟踪会话等。然后,分服务器端和客户端两种情况说明如何设置和读取cookie。在服务器端,例如使用PHP或Node.js,设置响应头。在客户端,使用JavaScript的document.cookie属性。 接下来是基本语法部分。根据引用[2],document.cookie的赋值语法需要包括键值对以及属性如path、expires等。例如,设置一个名为username的cookie,值设为'john',有效期1天,路径为根目录。同时,要提到如何读取cookie,即document.cookie返回所有cookie字符串,需要自己解析。 然后是应用场景,参考引用[1]和引用[3],cookie常用于会话管理、用户偏好设置、跟踪用户行为。不过需要注意cookie的安全性,比如HttpOnly和Secure标记,敏感信息不应存储在cookie中。 另外,用户可能对cookie与session的区别感兴趣,引用[2]和引用[3]提到了两者的区别,可以简要提及,但用户的问题主要是cookie本身,所以可能放在相关问题里。 需要确保使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$,但这里可能涉及代码示例,所以代码部分用代码块。同时,生成相关问题,根据引用内容,可能涉及cookie与本地存储的对比、cookie与session的区别、JSON的使用(引用[4])等。 检查引用标记是否正确添加,每个引用点末尾自然标注[^n]。比如在提到服务器端设置cookie时引用[2],在应用场景提到对比时引用[1]。 最后,确保回答结构清晰,分点说明,代码示例正确,语法正确,使用中文。用户可能需要具体例子,所以代码示例使用JavaScript和PHP,并说明每个参数的作用。 现在,整理这些思路,组织成回答,并生成相关问题。</think>### Cookie的基本用法与语法解析 Cookie是一种在浏览器端存储数据的机制,主要用于跟踪用户会话、保存用户偏好设置等。以下是具体用法和场景分析: --- #### 一、Cookie的基本用法 1. **服务器端设置Cookie** 服务器通过HTTP响应头`Set-Cookie`向浏览器发送Cookie数据,例如PHP代码: ```php <?php setcookie("username", "john", time() + 3600*24, "/"); ?> ``` - 参数说明: - `username`: Cookie名称 - `john`: 值 - `time()+3600*24`: 过期时间(1天后) - `/`: 作用路径(全站有效)[^2] 2. **客户端JavaScript操作Cookie** - **设置Cookie** ```javascript document.cookie = "theme=dark; expires=Fri, 31 Dec 2024 12:00:00 UTC; path=/"; ``` - **读取Cookie** ```javascript const allCookies = document.cookie; // 返回所有Cookie字符串,需自行解析 ``` --- #### 二、Cookie的核心语法 - **键值对格式**:`key=value`,多个属性用分号分隔。 - **常用属性**: - `expires`:过期时间(UTC格式) - `path`:允许访问Cookie的路径 - `Secure`:仅通过HTTPS传输 - `HttpOnly`:禁止JavaScript访问(防XSS攻击) --- #### 三、典型应用场景 1. **会话管理** 保存用户登录状态,例如Session ID通过Cookie传递[^3]。 2. **个性化设置** 存储用户主题、语言偏好等。 3. **用户行为跟踪** 记录用户浏览历史,用于数据分析[^1]。 --- #### 四、注意事项 - **安全性**:敏感信息(如密码)不应存储于Cookie。 - **大小限制**:单个Cookie通常不超过4KB,域名下总数有限(约50个)[^1]。 - **替代方案**:若需更大存储或本地缓存,可使用`localStorage`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值