一、什么是Cookie?
Cookie是小量信息,由网络服务器发送出来以存储在网络浏览器上,从而下次这位独一无二的访客又回到该网络服务器时,可从该浏览器读回此信息。所以它具有一定得信息存储功能,但是并不是什么都存放在cookie中。
二、Cookie的作用
Cookies最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookies的功用。
当然这些信息也并不是一直存放与你的浏览器中,Cookie有一个存放周期,可以通过代码自己决定存放周期,一般来说,我们都是在退出登陆的时候删除Cookie为了确保用户信息的安全。
三、如何应用Cookie
由于Cookie没有提供专门的API接口,所以需要我们自己来实现对于Cookie的操作:
class CookieHandle{
setCookie(name,value,saveTime){
let exdate = new Date();
exdate.setDate(exdate.getDate()+saveTime) //设置存储周期
document.cookie = name + "=" + escape(value) + ((saveTime == null) ? "" : ";expires="+exdate.toGMTString()) //设置cookie,并对信息进行一次加密
}
getCookie(name){
let cookie = document.cookie;
if(cookie.length>0){
cookie_start = cookie.indexOf(name + "=") //通过name找到我们需要cookie是否存在
if(cookie_start>-1){
cookie_start = cookie_start + name.length + 1;
cookie_end = cookie.indexOf(';',cookie_start) //查询cookie结尾的位置
if(cookie_end == -1){
cookie_end = cookie.length
}
return unescape(cookie.substring(cookie_start,cookie_end)); //返回找到的cookie的值并且解码
}
}
}
delCookie(name){
document.cookie = name + '=0;expires=' + new Date(0).toUTCString()
}
}
四、各大浏览器对于Cookie的限制
1、浏览器允许每个域名所包含的cookie数:
Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。
Firefox每个域名cookie限制为50个。
Opera每个域名cookie限制为30个。
Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
注:“每个域名cookie限制为20个”将不再正确!
2、当很多的cookie被设置,浏览器如何去响应。
除Safari(可以设置全部cookie,不管数量多少),有两个方法:
最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。Internet Explorer和Opera使用此方法。
Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。
3、不同浏览器间cookie总大小也不同:
Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。
来源:https://www.cnblogs.com/henry...
一、什么是Web Storage
它包含了两种机制:
- sessionStorage 为每一个给定的源(givenorigin)维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开状态,包括页面重新加载和恢复)。
- localStorage 同样的功能,但是在浏览器关闭,然后重新打开后数据仍然存在。
请注意这里是sessionStorage而不是session,这两者有着千差万别。
二、Web Storage的作用
存储一些需要页面共享的信息,并且不需要向后台发送的信息。
三、如何使用Web Storage
localStorage.setItem('name', 'Tom'); //在localStorage中写入键名为name,值为Tom的信息
let cat = localStorage.getItem("name"); //获取localStorage中键名为name的值。
localStorage.removeItem("name"); //移除name。
sessionStorage.setItem('key', 'value'); // 保存数据到sessionStorage
let data = sessionStorage.getItem('key'); // 从sessionStorage获取数据
sessionStorage.removeItem('key'); // 从sessionStorage删除保存的数据
sessionStorage.clear(); // 从sessionStorage删除所有保存的数据
四、各大浏览器Web Storage的存储限制
IE 9 > 4999995 + 5 = 5000000
firefox 22.0 > 5242875 + 5 = 5242880
chrome 28.0 > 2621435 + 5 = 2621440
safari 5.1 > 2621435 + 5 = 2621440
opera 12.15 > 5M (超出则会弹出允许请求更多空间的对话框)
来源:https://blog.csdn.net/cengjin...
一、Cookie、SessionStorage、LocalStorage的区别
1、Web Storage的概念和cookie相似,区别是它是为了更大容量存储设计的,cookie的大小是受限的,并且每次请求一个新的页面的时候cookie都会被发送过去,这样无形中浪费了带宽,另外cookie还需要指定作用域,不可跨域调用。
2、web storage拥有setItem,getItem,removeItem,clear等方法,不像cookie需要前端开发者自己封装setCookie,getCookie。
3、cookie的作用是与服务器进行交互,作为http规范的一部分而存在的,而web Storage仅仅是为了在本地“存储”数据而生
4、sessionStorage、localStorage、cookie都是在浏览器端存储的数据,其中sessionStorage的概念很特别,引入了一个“浏览器窗口”的概念,sessionStorage是在同源的同窗口中,始终存在的数据,也就是说只要这个浏览器窗口没有关闭,即使刷新页面或进入同源另一个页面,数据仍然存在,关闭窗口后,sessionStorage就会被销毁,同时“独立”打开的不同窗口,即使是同一页面,sessionStorage对象也是不同的。
来源:https://blog.csdn.net/ruby_xc...