浏览器中的三种存储Cookie,Session,LocalStorage
2019-05-08 20:28
423 查看
开发工具与关键技术:工具:Visual Studio 2015 技术:C#,javascript
作者:范子超 撰写时间:2019-05-06
- Cookie
Cookie储存在客户端,由用户自己销毁
Cookie:客户端信息存放对象,可以把用户的信息保存在用户的本地,不必总是访问服务器
Cookie用于保存客户浏览器请求服务器页面的请求信息,也可以用它保存非敏感性的内容。保存时间可以根据需要设置。如果没有设置Cookie失效时间,它仅保存至浏览器关闭。如果将Cookie设置为Min Value,则表示它永不过期。Cookie存储量受到很大限制,一般 4000 浏览器支持最大容量为4096字节。因此不能用来存储大量数据。由于并非所有浏览器都支持Cookie,并且它是以明文方式保存的,所以最好不要保存敏感性的内容。否则会影响网络安全。Cookie以文件的形式保存的请求信息
Cookie的简单应用:
//Response.Cookies["name"].Value = "Myname"; //存值 //string myname = Response.Cookies["name"].Value; //取值 HttpCookie cookie = new HttpCookie("mycookie"); //定义cookie对象以及名为mycookie的项 DateTime dt = DateTime.Now; //定义时间对象 TimeSpan ts = new TimeSpan(1, 0, 0, 0); //cookie有效作用时间,具体查msdn cookie.Expires = dt.Add(ts); //添加作用时间 cookie.Values.Add("user", "your name"); //增加属性 cookie.Values.Add("userid", "123456"); Response.AppendCookie(cookie); //确定写入cookie中 //读取cookie if (Request.Cookies["mycookie"] != null) { string temp = Convert.ToString(Request.Cookies["mycookie"].Values["user"]) + " " + Convert.ToString(Request.Cookies["mycookie"].Values["userid"]); //读全部就用Request.Cookies["mycookie"].Value) } //修改cookie Response.Cookies["mycookie"]["user"] = "2"; Response.Cookies["mycookie"].Expires = DateTime.Now.AddDays(1); //删除cookie下的属性 HttpCookie mycookie = Request.Cookies["mycookie"]; mycookie.Values.Remove("userid"); mycookie.Expires = DateTime.Now.AddDays(1); Response.Cookies.Add(mycookie); //删除所有cookie,就是设置过期时间为现在就行了 int cookies = Request.Cookies.Count - 1; for (int i = 0; i < cookies; i++) { mycookie = Request.Cookies[i]; mycookie.Expires = DateTime.Now.AddDays(-1); Response.Cookies.Add(mycookie); }
- Session
Session 储存在服务端,客户端(浏览器)关闭即销毁(若长时间不使用 且 浏览器未关闭的情况下, 默认自动销毁时间为20分钟)
Session:用户全局变量,对于该用户的所有操作过程都有效
Sessio用于保存每个用户的专用信息,它的生存期是用户持续请求时间再加上一段时间(可以在web.config中设置,默认是20分钟)。Session中的信息保存在服务器的内存中,当然你也可以设置它的保存方法(如存在SQL数据库中)。由于用户停止使用程序后它仍然在内存中保持一段时间,因此使用Session对象保存用户数据的方法效率很低。对于小量的数据。使用Session还是一个不错的选择。
Session:该对象是HttpSession类型的对象,描述一个客户端与服务器之间的一次通话时段,该段时间内包含客户端的若干次请求和服务器的相应响应,整个时间段session对象都存在。常用来实现购物车之类的存储当前用户的数据。不同用户有各自的不同session对象
Session的简单应用:
//Session["user"] = "mysession";//存值 //string username = Session["user"].ToString();//取值 Session["checkcode"] = ""; string checkcode = Session["checkcode"].ToString(); //保存对象 Test test = new Test(); Session["test"] = test; //取值 Test test1 = (Test)Session["test"];
- LocalStorage
localStorage用于持久化的本地存储,除非主动删除数据,否则数据永远也不会过期。
localStorage的优势:
- localStorage拓展了cookie的4K限制
- localStorage可以将第一次请求的数据直接存储到本地,这相当于一个5M大小的针对于前端的数据库,相比cookie可以节约带宽,但这个却是只有在高版本的浏览器在才支持的。
localStorage的局限:
- 浏览器的大小不统一,并且在IE8以上的版本才支持localStorage这个属性。
-目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。 - localStorage在浏览器的隐私模式下面是不可读取的。
- localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
- localStorage不能被爬虫抓取到。
localStorage与Session的唯一一点区别就是localStorage属于永久性存储,而Session属于当会话结束的时候,Session中的键值对会被清空。
使用localStorage要注意几点:
- localStorage的使用也是遵循同源策略的,所以说不用的网站之间localStorage是不同的,它们之间并没有什么联系。
- 存入localStorage的数据,不管存储的时候是什么类型,存入到里面之后都会被转换成string类型,所以有时需要进行类型转换。
localStorage的简单应用:
if (!window.localStorage) { alert("浏览器不支持localStorage"); return false; } else { var storage = window.localStorage; //三种存取值的方式,官方推荐使用setItem/getItem存取值 //修改则是直接将对应的storage值覆盖 //存 storage.a = "1"; storage["b"] = 2; storage.setItem("c", 3); //取 var a = storage.a; var b = storage["b"]; var c = storage.getItem("c"); //删除某一个storage storage.removeItem("c"); //清空storage storage.clear(); //注意事项:一般我们将JSON存入localStorage中,但是localStorage会自动将localStorage转换成字符串形式, //这个时候我们可以使用JSON.stringify()这个方法,来将JSON转换成JSON字符串 var data = { name: 'myname', sex: 'man' }; var d = JSON.stringify(data); storage.setItem("data", d); //将JSON字符串转换成JSON对象 var json = storage.getItem("data"); var jsonObj = JSON.parse(json); }
相关文章推荐
- 浏览器数据存储:Cookie和Session,localStorage 和 sessionStorage
- 存储信息的三种方式:Application,Session,Cookie区别
- 浏览器存储(cookie、localStorage、sessionStorage)
- 利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
- HTML5本地存储:SessionStorage, LocalStorage, Cookie
- 常见的浏览器存储方式(cookie、localStorage、sessionStorage)
- 浏览器端数据存储之Cookie、localStorage、sessionStorage
- jquery访问浏览器本地存储cookie,localStorage和sessionStorage
- 浏览器中cookie,session,localStorage的操作
- 实现一周之内自动登录的 cookie和session还有localStorage的存储机制
- localforage 对不同浏览器 使用不同的缓存策略 , 大大提高了性能 ,IndexedDB,WebSQL 和 localStorage 三种存储模式
- HTML5本地存储:SessionStorage, LocalStorage, Cookie
- jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
- 浏览器本地存储cookie,localStorage,sessionStorage的全解
- 关闭浏览器,和浏览器禁用cookie时Session处理的方法
- session依赖于cookie,cookie存储着sessionid。禁用cookie,session是否可以使用。
- cookie解决微信不能存储localStorage的问题
- 关于PHP中浏览器禁止Cookie后,Session能使用吗?
- ASP.NET MVC Filter 类切面 Session 存储 Cookie存储权限控制
- 关于浏览器缓存,cookie , session