Web前端存储之 cookie、sessionStorage 和 localStorage

Web前端存储之 cookie、sessionStorage 和 localStorage

一、cookie

客户端的 cookie 主要通过 key=value 的形式用于存储 web 页面的用户信息等,当浏览器从服务器上请求 web 页面时, 属于该页面的 cookie 会被添加到该请求中。服务端通过这种方式来获取用户的信息。存储数据大小大约是:4 K

用法

各个字段说明:

name: key值
value: value值
expires: 过期时间,GMT 是以格林威治标准时间来判断,不受本地时区影响。若不设置有效期或设置有误未被识别,则默认永久
path: 可以访问 cookie 的路径
domain:为可以访问此cookie的域名
size:设置cookie的大小
http:cookie 的httponly属性。若为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie
secure:设置是否只能通过https来传递此条cookie
1. 创建cookie

document.cookie="username=yyy;expires=Sat,03 Jul 2021 08:40:00 GMT; path=/"

2. 读取cookie

// 以下语句获取的是所有在有效期内的cookie字符串

let cookies = document.cookie

3. 修改cookie

// 修改 cookie 类似于创建 cookie,旧的 cookie 将被覆盖

document.cookie="username=ypf;expires=Sat,03 Jul 2021 08:40:00 GMT; path=/"

4. 删除cookie

// 删除 cookie 只需要设置 expires 参数为以前的时间即可。当删除时不必指定 cookie 的值

document.cookie="username=ypf;expires=Sat,03 Jul 2021 08:00:00 GMT; path=/"


/*
 * @Date: 2021-07-03 19:44:27
 * @information: cookie 封装方法
 */

var CookieUtil = {
  /**
   * 设置cookie
   * @param key key值
   * @param value value值
   * @param exp 有效时长 毫秒级的时间戳格式 默认当天23:59:59过期
   */
  setCookie: function (key,value,exp) {
    if (!key) return;
    let curDate = new Date()
    // 当前时间戳
    let curStamp = curDate.getTime()
    let leftTime = new Date()
    if (exp) {
      leftTime.setTime(curStamp + exp)
    } else {
      // 当前日期
      let curDay = curDate.toLocaleDateString()
      // 当日0点之前的时间戳
      let nowDayPassedStamp = 0
      nowDayPassedStamp = new Date(curDay).getTime() - 1
      // 当日已过去的时间戳
      let passedStamp = curStamp - nowDayPassedStamp
      // 当日剩余时间戳
      let leftStamp = 24 * 60 * 60 * 1000 - passedStamp
      leftTime.setTime(curStamp + leftStamp)
    }
    // 创建cookie
    document.cookie = key + '=' + value + ';expires=' + leftTime.toGMTString() + ';path=/'
  },/**
   * 获取cookie
   */
  getCookie: function (key) {
    if (!key) return;
    let cookieStr = document.cookie.replace(/\s/g,'')
    let cookieArr = cookieStr.split(';')
    for (let i = 0; i < cookieArr.length; i++) {
      let keyArr = cookieArr[i].split('=')
      if (keyArr[0] == key) return keyArr[1]
    }
  },/**
   * 删除cookie
   */
  removeCookie: function (key) {
    let time = new Date(0) - 1
    this.setCookie(key,'',time)
  }
}

二、storage

对浏览器来说,使用 Web Storage 存储键值对比存储 Cookie 方式更直观,而且容量更大,它包含两种:localStorage 和 sessionStorage。存储数据大小一般都是:5 MB

sessionStorage(临时存储)

为每一个数据源维持一个存储区域,在浏览器的此标签页打开期间存在,包括此标签页的页面重新加载

localStorage(长期存储)

与 sessionStorage 一样,但是浏览器关闭后,数据依然会一直存在

用法

sessionStorage 和 localStorage 的用法基本一致,引用类型的值需要转换成 JSON 进行存储

1. 保存数据到本地
let obj = {
    name: 'xiaoming',age: 18,birthday: '2000-01-01',}

sessionStorage.setItem('userInfo',JSON.stringify(obj))

localStorage.setItem('userInfo',JSON.stringify(obj))

// 注:若第二次存储的 key 值与第一次存储的 key 值相同,则会覆盖第一次的值
2. 从本地读取数据
let obj1 = JSON.parse(sessionStorage.getItem('userInfo'))

let obj2 = JSON.parse(localStorage.getItem('userInfo'))
3. 从本地删除指定 key 值
sessionStorage.removeItem('userInfo')

localStorage.removeItem('userInfo')
4. 清空存储的所有值
sessionStorage.clear()

localStorage.clear()

原文地址:https://www.cnblogs.com/Faith-Yin

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)