前言
第一次写文章,还请大家多多关照,写的不好和不对的还请大家多多指教,谢谢!
一. 什么是cookie
Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递。Cookie 包含每次用户访问站点时 Web 应用程序都可以读取的信息。
二. Cookie 的限制
大多数浏览器支持最大为 4096 字节的 Cookie。由于这限制了 Cookie 的大小,最好用 Cookie 来存储少量数据,或者存储用户 ID 之类的标识符。
三. 操作cookie
1 存储。
方式一:Response.Cookies["键"].value="值";
方式二:HttpCookie cookie = new HttpCookie("键","值");
cookie.Expires = DateTime.Now.AddMinutes(30); //设置过期时间,如果不设置则是关闭浏览器cookie失效。
Response.Cookies.Add(cookie);
2 读取。
方式一:if(Request.Cookies["键"]!=null)
string str = Request.Cookies("键").Value;
方式二:if(Request.Cookies["键"]!=null){
string str=Request.Cookies.Get("键");
}
提示:还有多值cookie读取。
3 删除cookie
HttpCookie cookie = new HttpCookie("键");
cookie.Expires=DateTime.Now.AddDays(-30); //将其有效期设置为过去的某个日期。当浏览器检查 Cookie 的有效期时,就会删除这个已过期的 Cookie。
Response.Cookies.Add(cookie);
四.Cookie 的范围.
可以通过两种方式设置 Cookie 的范围:
1 将 Cookie 的范围限制到服务器上的某个文件夹,这允许您将 Cookie 限制到站点上的某个应用程序。
HttpCookie appCookie = new HttpCookie("键");
appCookie.Value = "值" ;
appCookie.Expires = DateTime.Now.AddDays(1);
appCookie.Path = "/fileName";
Response.Cookies.Add(appCookie);
注意: 在某些浏览器中,路径区分大小写。您无法控制用户如何在其浏览器中键入 URL,但如果应用程序依赖于与特定路径相关的 Cookie,请确保您创建的所有超链接中的 URL 与 Path 属性值的大小写相匹配。
2 将范围设置为某个域,这允许您指定域中的哪些子域可以访问 Cookie。
(1)默认情况下,Cookie 与特定域关联。(例如网站:http//:www.yiming.com)
HttpCookie appCookie = new HttpCookie("键");
appCookie.Value = "值" ;
//appCookie.Domain ="www.yiming.com"; //默认情况下www.yiming.com
Response.Cookies.Add(appCookie);
(2)Domain属性创建可在多个子域间共享的 Cookie,如下面的示例所示:(多个网站可共享,如:bba.yiming.com;kks.yiming.com;doq.yiming.com等等)
HttpCookie appCookie = new HttpCookie("键");
appCookie.Value = "值" ;
appCookie.Domain =".yiming.com";
Response.Cookies.Add(appCookie);
五.优缺点。
优点:
相比Session和Application对象,使用Cookie能持久化保存用户信息。Cookie保存在客户端,而Session和Application保存在服务器端,故Cookie能长久保存。web应用程序可以通过获取客户端的Cookie来进行用户身份认证。
Asp.net包含两个Cookie集合,通过HttpRequest的Cookie集合进行访问,Cookie不是Page类的子类,所以使用方法与Session和Application不同,相比于他们Cookie的优点如下:
1.可以配置过期时间
2.简单:Cookie是一种基于文本的轻量级结构,包括简单的键值对
3.数据持久:因为保存到客户端
4.无任何服务器资源:因为存储在本地客户端
缺点:
1.不要在Cookie中存储敏感信息,如用户名、密码、信用卡号等等。
2.在对cookie操作之前要对 Cookie 内容进行 HTML 编码的方法,对信息加密(尤其是存储中文时)。
3.Cookies属性不指示 Cookie 是否启用。它仅指示当前浏览器是否原本支持 Cookie。
4.Cookie存储的数据量有所限制,大多数浏览器支持的最大容量为4096字节,因此不要用Cookie来保存大量数据。
5.只要是微信打开的页面,不要在客户端使用JS或JQuery读取Cookie,必须在服务器器端使用Request.Cookie来读取。