博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据缓存sessionStorage、localStorage、cookie、session间的区别与联系
阅读量:6176 次
发布时间:2019-06-21

本文共 1890 字,大约阅读时间需要 6 分钟。

 核心三步曲:创建-获取-清除(回收)

sessionStorage.setItem("key","123");sessionStorage.getItem("key");sessionStorage.removeItem("key");sessionStorage.clear();//清除所有

主要作用:用来存储客户端临时信息的对象【数据临时存放区,能在一定程度上减少与服务器的交互次数】

传输对象:字符串类型的对象

当然我们可以针对性的去改变他的传输对象的限制,比如说要传一个json数据,如下实例:

sessionStorage.setItem("key",'{"a":"1"}');var jsonstr = sessionStorage.getItem("key");var jsonval = JSON.parse(jsonstr);console.log(jsonval["a"]);//输出为1

sessionStoragelocalStorage的区别与详解

主要区别sessionStoragelocalStorage的生命周期不一样。

sessionStorage浏览器关闭后其内部setItem的值会被自动删除

localStorage   :只要你手动不清缓存或者removeItem,clear等操作。设置的值会一直存在,关闭浏览器后还会存在(前提是你重新打开同样的网址)

实例讲解:

百度首页分别设置一个sessionStoragelocalStorage的值并展示下

localStorage.setItem("local","123");localStorage.getItem("local"); sessionStorage.setItem("session","234");sessionStorage.getItem("session");

 

如下图所示:

 

然后关闭百度浏览器,重新打开百度首页:

在通过下面的方式获取数据值(或者用.length的方法来判断彼此区别)如下图所示:

上面两种方式都是属于web storage,他和cookie,session还是有些区别的

Cookie(客户端)存储于访问者的计算机中的变量的大小是受限的,大概只允许4k

web storage(客户端) 缓存大小能到5m甚至更大。

这两者都是保存在浏览器端,且同源的

Session 在服务器端,默认被存在在服务器的一个文件里(不是内存),

Session的运行依赖 session id,而 session id 是存在 cookie 中的,也就是说,如果浏览器禁用了 cookie ,同时 session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id),和sessionStorage不是同一概念的,值得注意。

 【session和cookie概念】

详解session和cookie的关系及作用(安全领域的基友和我讲解后总结的)

sessionid就是为了保持会话的,sessionid我们只是要求登录前和登陆后要做个变化,如果是为了防止sessionid泄露,那么就是用https

和具体用户相关的,一般是保存在数据库里的,比如一个用户userid=1,你登录之后,随机生成一个sessionid=abc,那么这时再将abc和userid=1进行绑定,用户的数据是和userid=1相关存在数据库的

你重新登录,获取新的sessiond=qqqqq,还是会根据你登录的用户名查找到userid=1,然后将qqqqq和userid=1绑定,可以session[username]=1111这样的,叫做会话变量的

安全测试对sessionid就三个要求

1.足够随机

2.登录之后更新为新的

3.防止泄露就是用https了

cookie里记录sessionid值,后端根据cookie找到sessionid,再根据sessionid找到会话

Http是无状态的协议

比如访问一个获取用户信息的页面/userinfo.php,那么两个用户同时访问,如何确定你是哪个用户

那我如果知道你的userid,是不是就能看到你的信息了

而且所有和用户相关的,都要带userid参数,所以换成cookie里保存sessionid ,而且每次随机也不用写代码每次带上userid参数了,开发也方便,一定程度上保证用户数据安全。

 

转载于:https://www.cnblogs.com/b-code/p/9020910.html

你可能感兴趣的文章
C++ XML
查看>>
windows批处理 打开exe后关闭cmd
查看>>
Linux 安装中文包
查看>>
谷物大脑
查看>>
访问控制-禁止php解析、user_agent,PHP相关配置
查看>>
AgileEAS.NET之系统架构
查看>>
Exchange server 2013 SP1 客户端会议室邮箱自动回复延迟
查看>>
nginx反向代理缓存服务器构建
查看>>
RHEL6 搭建LVS/DR 负载均衡集群 案例
查看>>
以太坊·Rinkeby 测试网络
查看>>
字符串按规则排序算法
查看>>
MPLS + BGP高级特性
查看>>
plist文件读写操作
查看>>
oracle resetlogs和noresetlogs 创建控制文件区别
查看>>
2013-7-17学习作业练习
查看>>
ZAM 3D入门教程(4):Extrusion编辑器
查看>>
《深入实践Spring Boot》一第2章 在Spring Boot中使用数据库2.1 使用MySQL
查看>>
C++语言基础 例程 字符串类
查看>>
堆排序
查看>>
Java的热部署(后期完善)
查看>>