不管是笔试还是面试相信大家都会经常遇到问Cookie、LocalStorage、SessionStorage 这三个不同的,什么不说先上一波图先:

 

针对他们大小之分应用场景也有不同:

因为考虑到每个 HTTP 请求都会带着 Cookie 的信息,所以 Cookie 当然是能精简就精简啦,比较常用的一个应用场景就是判断用户是否登录。针对登录过的用户,服务器端会在他登录时往 Cookie 中插入一段加密过的唯一辨识单一用户的辨识码,下次只要读取这个值就可以判断当前用户是否登录啦。localStorage相对cookie大的多,所以可以用来做购物车,h5小游戏,web应用等。

注意:不是什么数据都适合放在 Cookie、localStorage 和 sessionStorage 中的。使用它们的时候,需要时刻注意是否有代码存在 XSS(什么是xxs下回分解) 注入的风险。因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有 XSS 的风险,它们就能对你的 localStorage 肆意妄为。所以千万不要用它们存储你系统中的敏感数据。

   说了他们的好和不好后是时候表演正真技术了(js如何操作他们):

JS设置cookie:

假设在A页面中要保存变量username的值("chentutu")到cookie中,key值为name,则相应的JS代码为:

document.cookie="name="+username;  

JS读取cookie:

var username=document.cookie.split(";")[0].split("=")[1];  

这是最简单的操作cookie的方法,下面代码给大家展示一下cookie的基本操作:

//写cookies 

function setCookie(name,value,Days)
{
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
} //读取cookies
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]);
else
return null;
}
//读取cookie方法二:
function getCookie2(key) {
var arr1 = document.cookie.split('; ');
for (var i = 0; i < arr1.length; i++) {
var arr2 = arr1[i].split('=');
if (arr2[0] == key) {
return unescape(arr2[1]);
}
}
}
//删除cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

localstorage提供了:localStorage.getItem(name);localStorage.setItem(name, value);localStorage.removeItem(name);等方法,用来处理增、删、查。

最新文章

  1. Windows Azure Virtual Machine (26) 使用高级存储(SSD)和DS系列VM
  2. js回调函数(callback)理解
  3. Visual Studio 2015 预览版 - 支持跨平台开发Android/iOS应用程序(内置安卓模拟器)
  4. C#操作注册表全攻略
  5. 词法分析器flex的使用
  6. 为什么a标签中使用img后的高度多了几个像素?
  7. Apache+windows server2008 外网访问配置
  8. MVC3+EF4.1学习系列(六)-----导航属性数据更新的处理
  9. [Hive_5] Hive 的 JDBC 编程
  10. LOJ6089 小Y的背包计数问题(根号优化背包)
  11. nc linux命令详解
  12. Windows文件夹、文件源代码对比工具--WinMerge
  13. Docker 安装 oracle 并使用 navicat 实现外部连接
  14. hdu 2825
  15. relay.index&#39; not found
  16. 【Unity】10.4 类人动画角色的控制
  17. 实现自己的ls命令
  18. Activity被回收导致fragment的getActivity为空
  19. Android pm 命令详解
  20. 《剑指offer》面试题45 圆圈中最后剩下的数字(Java版本)

热门文章

  1. telnet端口问题
  2. union 的一个简单例子,搜狗笔试题
  3. 湖南集训day3
  4. asp.net mvc 最简单身份验证 [Authorize]通过的标准
  5. Java Controller下兼容xls和xlsx且可识别合并单元格的excel导入功能
  6. Java_注解之二
  7. Android开发中常用的ListView列表的优化方式ViewHolder
  8. Android项目实战_手机安全卫士splash界面
  9. linux 卸载 mongo2.6
  10. SQL基本操作——declare if lese while