当前位置: 首页 > news >正文

sessionStorage和localStorage

H5前端存储 localStorage 和 sessionStorage

简述

曾在项目中多次使用过localStorage和sessionStorage来存放token,但一直未深入了解。近期项目压力极小,就看了很多文章研究了一下,并结合项目经验做个总结。

session 和 sessionStorage,Java 和 JavaScript

在彻底弄懂session,cookie,token中,我已经讲过session。在我学习sessionStorage的过程中,看到很多文章的评论说:sessionStorage不是存在服务器的吗?在这里,我说明一下,session是存放于服务器的一个状态集合,而sessionStorage是H5新引入的一个客户端存储数据的空间与session并无关系,大家千万不要搞混了。就像Java和JavaScript,只是名字长得像而已。localStorage和sessionStorage之间有些异同,可以进行比较

用法

用法很简单,sessionStorage和localStorage的api一样。

// 保存数据到sessionStorage
sessionStorage.setItem("key", "value");

// 从sessionStorage获取数据
const data = sessionStorage.getItem("key");

// 从sessionStorage删除保存的数据
sessionStorage.removeItem("key");

// 从sessionStorage删除所有保存的数据
sessionStorage.clear();

// 从sessionStorage获取全部数据
const allData=sessionStorage.valueOf();

异同

相同点

  • localStorage和sessionStorage一样都是用来存储客户端临时信息的对象。以chrome为例
    图片描述
  • 他们均只能存储字符串类型的对象
  • 存储大小都为5M
  • 都遵守同源策略

不同点

  • sessionStorage有期限,当窗口或浏览器关闭时就会被销毁。localStorage无限期,关闭浏览器后仍存在,除非用户手动在浏览器UI层删除
  • localStorage 在同源的不同窗口下可共享,在不同浏览器中不可共享
  • sessionStorage 在同源的不同窗口下不可共享。注意这里的不同窗口是指浏览器另起一窗口,并不是指页面路由跳转

小结

在我做过的项目中,storage一般用来存储少量的用户信息和token,建议大家不要把什么数据都放在 localStorage 和 sessionStorage中,毕竟前端的安全性太低。只要打开控制台就可以任意的修改localStorage 和 sessionStorage的数据。重要的信息最好还是放在后台。

谢谢

最后 如果大家有疑惑可以随便找一个小说网站在控制台试一试,很快便可掌握。
本文如有错误,欢迎指出。

相关文章:

  • 昼猫笔记 JavaScript -- 面向对象(I)
  • 在Activity中为什么要用managedQuery()
  • uoj#352. 新年的五维几何(概率期望+爆搜)
  • 自己编写的一个Javascript正则表达式对象
  • 几张关于IT业人才成长的统计图片
  • POJ 2029
  • sed命令教程
  • jquery版本
  • 【M19】了解临时对象的来源
  • NSTimer的详细用法
  • Windows下安装Scrapy方法及常见安装问题总结——Scrapy安装教程
  • c# Winform上传文件
  • Codeforces Round #532 (Div. 2)
  • Ubuntu 图形处理软件
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 【译】JS基础算法脚本:字符串结尾
  • Centos6.8 使用rpm安装mysql5.7
  • gitlab-ci配置详解(一)
  • input的行数自动增减
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • MobX
  • MySQL-事务管理(基础)
  • Promise初体验
  • Python_OOP
  • Python实现BT种子转化为磁力链接【实战】
  • socket.io+express实现聊天室的思考(三)
  • SpiderData 2019年2月16日 DApp数据排行榜
  • 观察者模式实现非直接耦合
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 七牛云假注销小指南
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 学习笔记:对象,原型和继承(1)
  • 《码出高效》学习笔记与书中错误记录
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 函数计算新功能-----支持C#函数
  • 如何正确理解,内页权重高于首页?
  • ​MySQL主从复制一致性检测
  • ​Spring Boot 分片上传文件
  • ​用户画像从0到100的构建思路
  • #Linux(权限管理)
  • #LLM入门|Prompt#3.3_存储_Memory
  • $.each()与$(selector).each()
  • (1)常见O(n^2)排序算法解析
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C#)获取字符编码的类
  • (八十八)VFL语言初步 - 实现布局
  • (二)c52学习之旅-简单了解单片机
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (图)IntelliTrace Tools 跟踪云端程序
  • (一)python发送HTTP 请求的两种方式(get和post )