简述HTML本地存储

  本地存储,即在用户浏览器中将数据保存在本地,HTML5之前主要是Cookie,HTML5问世后,又出现了四种本地存储方式:LocalStorageSessionStorageIndexedDBWebSql,鉴于后两者使用场景不多,因此本文主要简述其余三种。(仅做笔记,并非详细教程)
  一、 Cookie
  HTTP是一种无状态协议,在连接关闭后无法记录用户的信息,所以有了Cookie,它就相当于一张超市的积分卡,可以保存客户的消费信息,当用户下次登录系统时,不必再做繁琐的身份验证。
  cookie 是由服务器端生成的,发送给User-Agent(用户代理),浏览器会将cookie的key/value 保存到一个文本文件中,在下次请求的时候再发送给服务器。
  cookie的主要内容包括:名字、值、过期时间、路径和域。路径与域一起构成cookie的作用范围。
  格式:Set-Cookie: "name=value;domain=.baidu.com;path=/;expires=Sat, 11 Jun 2016 11:29:42 GMT;HttpOnly;secure"
  其包含属性如下:
  name: 一个唯一确定的cookie名称。通常来讲cookie的名称是不区分大小写的
  value: 存储在cookie中的字符串值。最好为cookie的name和value进行url编码
  domain: cookie对于哪个域是有效的。所有向该域发送的请求中都会包含这个cookie信息。这个值可以包含子域(如:yq.aliyun.com),也可以不包含它(如:.aliyun.com,则对于aliyun.com的所有子域都有效).
  path: 表示这个cookie影响到的路径,浏览器跟会根据这项配置,像指定域中匹配的路径发送cookie。
  expires: 失效时间,表示cookie何时应该被删除的时间戳(也就是,何时应该停止向服务器发送这个cookie)。如果不设置这个时间戳,浏览器会在页面关闭时即将删除所有cookie;不过也可以自己设置删除时间。这个值是GMT时间格式,如果客户端和服务器端时间不一致,使用expires就会存在偏差。
  max-age: 与expires作用相同,用来告诉浏览器此cookie多久过期(单位是秒),而不是一个固定的时间点。正常情况下,max-age的优先级高于expires。
  HttpOnly: 告知浏览器不允许通过脚本document.cookie去更改这个值,同样这个值在document.cookie中也不可见。但在http请求张仍然会携带这个cookie。注意这个值虽然在脚本中不可获取,但仍然在浏览器安装目录中以文件形式存在。这项设置通常在服务器端设置。
  secure: 安全标志,指定后,只有在使用SSL链接时候才能发送到服务器,如果是http链接则不会传递该信息。就算设置了secure 属性也并不代表他人不能看到你机器本地保存的 cookie 信息,所以不要把重要信息放cookie就对了服务器端设置
  Cookie的限制
  1. Cookie只是一段文本,所以它只能保存字符串
  2. 浏览器对它有大小(4K)、个数(每个站点20个;总数300个)有限制。
  3. Cookie的内容是明文保存的,有些浏览器提供界面修改,所以不适合保存重要的或者涉及隐私的内容。
  二、 WebStorage(LocalStorage、SessionStorage)
  1、 存储方式:localStorage的存储方式采用key、value的方式。value的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true值会转换为"true")。
   2、同源策略限制:若想在不同页面之间对同一个localStorage进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE8和9存储数据仅基于同一主机名,忽略协议(HTTP和HTTPS)和端口号的要求)
  3 、只在本地存储:localStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效。
  5、存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。
  6、 同浏览器共享:localStorage的数据可以在同一个浏览器的不同标签页的同源页面之间共享
  三、 三者的异同
  1、生命周期
  localStorage生命周期为永久有效
  sessionStorage生命周期为当标签或者窗口关闭的时候
  cookie若不设置时间,则表示这个cookie的生命周期为浏览器会话期间,关闭浏览器窗口,cookie就会消失(会话Cookie
  2、localStorage和session的共享性
  不同的浏览器无法共享localStorage或sessionStorage中的信息。
  localStorage和Cookie在所有的同源窗口中是共享的
  sessionStorage在不同的浏览器窗口中不共享,即使是同一个页面
  3、 共同点
  都是保存在浏览器端,并且是同源的(URL的协议、端口、主机名是相同的,只要有一个不同就属于不同源)
  四、手动简单封装Cookie

/**
 * 设置Cookie
 */
function setCookie(name,value,expires){
    var date = new Date()
    date.setDate(date.getDate() + expires)
    //为了防止泄露,最好编码
    document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) + "; PATH=/; EXPIRES=" + date
}
/**
 * 获取Cookie
 */
function getCookie(name){
    var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)")  //使用正则表达式匹配
    var arr = document.cookie.match(reg)
    return decodeURIComponent(arr[2])   //解码后显示
}
/**
 * 删除Cookie
 */
function removeCookie(name){
    setCookie(name,"")  //让Cookie立即失效
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容