cookie本地存储

本地存储

所谓的本地存储,其实就是把一些信息,存储到客户端版本地,存储的信息不会因为页面的跳转或关闭而消失,这样就可以实现很多功能需求了。 
特点

  • 虽然是存储到本地了,但是有浏览器中间的访问限制,例如:谷歌下存储的信息在IE中访问不到
  • 还会存在域名和域名之间的访问限制,例如:在谷歌下访问京东,存储了京东的客户信息,当我们用谷歌浏览器打开了百度,百度是无法获取原来在京东下存储的本地信息的

本地存储应用的案例:

登录的时候,记住用户名和密码,其实就是把信息存储到客户端本地,下一次再打开页面的时候,直接从本地获取上一次存储的信息,然后自动登录后者填充到对应的文本框中

购物车案例:拿京东的购物车举例,在用户没有登录京东的时候,购买的产品都是存储到本地的,进入我的购物车页面,展示的说所有信息都是从本地存储中获取展示的

使用本地存储可以优化网站的性能,避免频繁触发AJAX请求,例如:我们第一次从服务器获取数据,把得到的数据存储到本地一份并且记录存储的时间,当刷新页面的时候,我们先去本地找信息,拿当前时间和之前存储的时间做对比,如果在1MIN之内(时间自己把控),就不再发送AJAX请求,直接视同本地数据展示,如果超过时间,我们重新发送请求,把最新数据拿到后,替换之前本地存储的数据…….

验证用户是否登录:它的原理步骤是,首先当用户登录成功后,我们会在客户端本地存储一些当前登录客户的基本信息(ID/用户名…),当需要验证是否登录的时候(验证是否有登录态),直接到本地去查找有没有存储那些信息,有则代表登录,没有则代表没有登录

前端领域中实现本地存储的技术方式:

  • cookie 
    h5中提供的webStorage,其中包含localStorage和sessionStorage,最常用的是localStorage
  • 本地数据库存储:webSQL和IndexedDB
  • 本地缓存存储:Cache storage 和Application storage 
    其中最常用的就是:cookie和localStorage
cookie

cookie是是目前前端市场上最常用的本地存储方式,它兼容所有的浏览器

  • 存储的大小有限制:一般浏览器规定同源下最多只能存储4KB大小
  • cookie有过期时间,时间我们可以自己来设置,一般不超过一个月
  • cookie不稳定,因为我们可以使用安全卫士或者浏览器的垃圾清理功能把coookie移除掉
  • 用户可以根据自己的需求,开启无痕浏览或者隐身模式,这样cookie就不能进行存储了
  • cookie不是严格意义上的本地存储,它和服务器之间是有关联的
localStorage

它是H5中提供的本地存储方式,不兼容IE6-8浏览器,我们一般在移动端使用居多,PC端不需要考虑兼容的情况下也可以使用

  • 存储也有大小的限制,一般浏览器规定同源下最多存储5MB内容
  • 没有过期时间,只要我们不手动清除,永久存储到本地
  • localStorage相对于cookie稳定一些,不会被安全卫士或者浏览器自带的垃圾清理功能清除掉
  • localStorage不受无痕浏览或者隐身模式的影响
  • localStorage是严格的本地存储,和服务器之间没有半毛钱的关系

localStorage的使用发发

1.localStorage.setItem([key],[value])//-->设置本地存储信息2.localStorage.getItem([key])//-->通过KEY获取本地存储的信息3.localStorage.removeItem([key])//-->删除指定KEY对应的本地存储信息4.localStorage.clear();//-->清除当前余下所有本地存储信息5.    localStorage.key([index]);-->使用localStorage存储的信息是一个Storage集合,会把所有的属性名KEY放在集合中,这个方法就是通过索引获取指定未知的属性名信息6.    //-->{name:‘珠峰培训‘,age:‘8‘,length:2}7.    //-->localStorage.key([1]);age  

cookie的使用方法

1.//cookie封装库2.var cookieRender = (function () {3.//->设置4.function setValue(options) {5.    var _default = {6.        name: null,7.        value: null,8.        expires: new Date(new Date().getTime() + (1000 * 60 * 60 * 24)),9.        path: ‘/‘,10.        domain: ‘‘11.};12.    for (var key in options) {13.        if (options.hasOwnProperty(key)) {14.            _default[key] = options[key];15.        }16.    }17.    document.cookie = _default.name + "=" + escape(_default.value) + ";expires=" + _default.expires.toGMTString() + ";path=" + _default.path + ";domain=" + _default.domain;18.}19.20.//->获取21.function getValue(name) {22.    var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));23.    if (arr != null) {24.        return unescape(arr[2]);25.    }26.    return null;27.}28.29.//->删除30.function removeValue(options) {31.    var _default = {32.        name: null,33.        path: ‘/‘,34.        domain: ‘‘35.    };36.    for (var key in options) {37.        if (options.hasOwnProperty(key)) {38.            _default[key] = options[key];39.        }40.    }41.    if (getValue(_default.name)) {42.        document.cookie = _default.name + "= ;path=" + _default.path + ";domain=" + _default.domain + ";expires=Fri,02-Jan-1970 00:00:00 GMT";43.    }44.}45.46.return {47.    set: setValue,48.    get: getValue,49.    remove: removeValue50.}51.})();52.//-->设置cookie53.cookieRender.set({54.    name:‘‘,55.    value:‘‘56.});57.//-->获取cookie58.cookieRender.get([key]);59.//-->删除cookie60.cookieRender.remove({61.    name:‘‘62.}); 

localStorage存储的信息都是字符串,如果我们传递的不是STRING类型的,那么浏览器也会把其转换为字符串类型,然后再进行存储,所以我们从本地获取的结果也是字符串类型的。

本地存储的安全问题

不管是cookie还是localStorage哪一个存储的信息,我们都可以在谷歌控制台的Resources/Application选项中查看到:而且存储的信息都采用的是‘明文存储’,这样导致存储的信息存在安全隐患,所以在真实项目中是不鼓励存储重要信息的,如果非要进行存储的话,需要把存储的信息进行加密。

加密有两种方式

  • 可以逆转的加密方式;这个每一个公司用的不太一样,很多公司都是自己开发的加密解密方式
  • 不可逆转的加密方式;目前最常用的就是md5加密方式,我们需要导入md5.js,例如密码必须使用不可逆转的加密

MD5的使用方式 
引入MD5.js

1.hex_md5(‘00000000‘);//使用方式,里面的内容是需要加密的东西

MD5是不能解密的,网上说的解密其实就是一个数据库检索碰撞的过程:他们使用算法把一些简单的密码经过MD5的加密,把加密的结果存储到数据库,我们去解密一个结果,后台拿到数据库碰撞,碰上就能解密,碰不了就解密不了。所以我们平时要注意:

  • 提醒用户创建密码的时候复杂一些,一般最好是大小写和数字组合,所以一般网站都会有这样要求,需要前端开发需要使用正则进行检测。
  • 为了防止用户的密码过于简单,我们一般都会把加密的结果进行二次处理,例如我们可以把前八个后后八个截取掉,然后把剩下的字符按照一定的规律重新的排列组合;

扩展:本地存储的信息如果是中文有可能出现乱码的情况,如何解决?

把中文汉字进行编码,把编码后的结果进行存储,如何编码呢?

  • escape、unescape 总结三者的区别
  • encodeURI、decodeURI
  • encodeURIComponent、decodeURIComponent
时间: 2024-10-17 10:15:27

cookie本地存储的相关文章

本地存储之cookie

cookie概述: Cookie 在计算机中是个存储在浏览器目录中的文本文件,当浏览器运行时,存储在 RAM 中发挥作用 (此种 Cookies 称作 Session Cookies), 一旦用户从该网站或服务器退出,Cookie 可存储在用户本地的硬盘上 (此种 Cookies 称作 Persistent Cookies). Cookie 是在 HTTP 协议下,服务器或脚本可以维护客户工作站上信息的一种方式. Cookie 是由 Web 服务器保存在用户浏览器(客户端)上的小文本文件,它可以

常用的本地存储-----cookie篇

1.引言 随着浏览器的处理能力不断增强,越来越多的网站开始考虑将数据存储在「客户端」,那么久不得不谈本地存储了. 本地存储的好处: 一是避免取回数据前页面一片空白,如果不需要最新数据也可以减少向服务器的请求次数,从而减少用户等待从服务端获取数据的时间. 二是网络状态不佳时仍可以显示离线数据. 2.本地存储 用chrome浏览器打开一个网页,F12进入开发者模式,点击Application,我们可以看到: 以上的Local Stroage . Session Stroage . IndexedDB

regexp模式匹配+location页面跳转+cookie/localstorage本地存储

学习js的过程中,根据知识点编写一些code进行测试,以便检验. 这段程序使用了以下知识点: 1.regexp,对数据进行模式匹配 2.使用location对象进行页面跳转. 3.cookie/localstorage等本地存储的使用 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <span id="span1

本地存储和cookie

localStorage 和 cookie一样,数据存储在浏览器客户端,不会随刷新页面,关闭页签,打开新网站,乃至关闭浏览器而改变: sessionStorage会在关闭页签,关闭浏览器时失去数据,刷新浏览器,前进后退时不会丢失数据,并且sessionStorage的数据每个窗口是独立的,不会多窗口共享数据: cookie会每次发送http请求时被发送到服务器,localStorage和sessionSotrage没有这样多余的操作: cookie的存储限制在4k之内,localStorage和

h5的本地存储——sessionStorage,localStorage

HTML5 提供了两种在客户端存储数据的新方法: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储 SessionStorage, LocalStorage, Cookie这三者都可以被用来在浏览器端存储数据,localStorage和sessionStorage都是本地存储. Cookie会在每次发送HTTP请求时附加到Cookie头字段,服务器以此得知用户所处的状态. Web Storage的概念和cookie相似,

本地存储localStorage以及它的封装接口store.js的使用

本地存储localstorage localstorage 是 HTML5 提供的在客户端存储数据的新方法,主要作用是将数据保存在客户端中,并且数据是永久保存的,除非人为干预删除. localstorage作为本地存储来使用,解决了cookie存储空间不足的问题:cookie中每条cookie的存储空间为4k,但localStorage的存储空间有5M大小.另外,相比于cookie,localStorage可以节约带宽,在同一个域内,浏览器每次向服务器发送请求,http都会带着cookie,使c

HTML5移动开发之路(19)——HTML5 Local Storage(本地存储)

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(19)--HTML5 Local Storage(本地存储) 一.浏览器存储的发展历程 本地存储解决方案很多,比如Flash SharedObject.Google Gears.Cookie.DOM Storage.User Data.window.name.Silverlight.Open Database等. 借用网上的一张图来看下目前主流的本地存储方案: Cookie: 在web中得到广泛应用,但局限

Html5 web本地存储

Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Storage官方建议为每个网站5MB. Web Storage又分为两种: sessionStorage localStorage 从字面意思就可以很清楚的看出来,sessionStorage将数据保存在session中,浏览器关闭也就没了:而localStorage则一直将数据保存在客户端本地: 不管

11_HTML5_Local_Storage本地存储

本地存储localStorage是大型cookie,cookie只有4k, 建议用第三种getItem(), Js存储cookie的存储和读取是很麻烦的.