首页 > 其他分享 >cookie、sessionStorage 和 localStorage

cookie、sessionStorage 和 localStorage

时间:2023-04-24 10:25:40浏览次数:34  
标签:Cookies 浏览器 localStorage sessionStorage Cookie cookie

cookie、sessionStorage 和 localStorage

1.基本概念

Cookie是保存在计算机上的一种文件。当我们使用计算机浏览网页时,服务器会生成一个证书并将其返回给我们的计算机。这个证书就是cookie。一般来说,cookie是服务器写给客户端的文件,也可以称为浏览器缓存。

简单来说,它可以读取并保存你访问网站时产生的一些行为信息,这些信息通常是加密的,否则会侵犯用户的隐私。Cookie也可以帮助加快第二次访问。通常,当我们访问一些网页时,系统会提示我们是否要保存用户名和密码。下次登录时,我们可以自动登录,无需再次登录。
image
图片来源于百度

2.用法
//引入js-cookie.js
1.直接引用cdn:<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
2.本地下载下来后:<script src="/plugins/js.cookie.js"></script>
3.模块化开发时: npm install js-cookie  import Cookies from 'js-cookie'
//使用
// 写入cookie
Cookies.set('name', 'value');
// 读取cookie
Cookies.get('name'); //'value'
// 读取所有可见的cookie
Cookies.get();//{name: 'value'}
// 删除某项cookie值
Cookies.remove('name');

//cookie的set方法支持的属性有:
//expires->过期时间
//path->设置为指定页面创建cookie
//domain->设置对指定域名及指定域名的子域名可见
//secure->设置是否只支持https,默认是false
Cookies.set('key', 'value');  //创建简单的cookie
Cookies.set('key', 'value', { expires: 27 });//创建有效期为27天的cookie
Cookies.set('key', 'value', { expires: 17, path: '/userInfo'  }); //为userInfo页创建有效期17天的cookie
//删除指定页面path的cookie
Cookies.remove('key', { path: '' });

//注:如果存的是对象,如:
const userInfo = {age : 111, score : 90};
Cookies.set('userInfo', userInfo);
//取出来的userInfo需要进行JSON的解析,解析为对象
const userInfo = JSON.parse( Cookies.get('userInfo') );
//也可以使用
Cookies.getJSON('userInfo');
3.生命周期与优缺
//创建Cookie时指定的expires值,就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。
//注:Cookie的生存周期设置为 '0'或负值, 在关闭浏览器时,就会马上清除Cookie。

优点

  • Cookie易于使用和实现

    实现cookie的使用要比任何其他Internet协议容易得多。

  • 占用更少的内存

    不需要任何服务器资源,并存储在用户的计算机上,因此不会给服务器带来额外的负担。

  • 持久性

    当在客户端的浏览器上设置Cookie时,它可以持续数天,数月甚至数年。这样可以轻松保存用户首选项和访问信息,并在用户每次返回站点时保持此信息可用。此外,由于Cookie存储在客户端的硬盘上,因此如果服务器崩溃,它们仍然可用。

缺点

  • 不安全

    cookie是以明文形式存储,可能会造成安全风险,因为任何人都可以打开并篡改cookie。

  • 数量受到限制

    浏览器能创建的 Cookie 数量最多为 300​ 个,并且每个不能超过 4KB​,每个 Web 站点能设置的 Cookie 总数不能超过 20 个。

  • 可以被禁用

    用户可以选择从浏览器设置中禁用其计算机上的cookie。这意味着用户可以决定不在他的浏览器上使用cookie,这可能会使程序在浏览器的运行中产生一些问题。

SessionStorage和localStorage
1.基本概念

浏览器提供的本地存储机制

2.用法
//它们的 API 基本相同,包括:
// setItem(key, value): 存储数据
// getItem(key): 获取数据
// removeItem(key): 删除数据
// clear(): 清空所有存储的数据
// key(i): 获取第 i 个键名
// length: 获取存储的数据个数

// 存储数据
sessionStorage.setItem("key1", "value1");
localStorage.setItem("key2", "value2");
// 获取数据
const value1 = sessionStorage.getItem("key1");
const value2 = localStorage.getItem("key2");
// 删除数据
sessionStorage.removeItem("key1");
localStorage.removeItem("key2");
// 清空存储
sessionStorage.clear(); 
localStorage.clear();
3.生命周期与优缺点
  • sessionStorage 只在当前浏览器标签页有效,关闭标签页即失效。localStorage 永久有效,除非主动删除。

localStorage 优点:

  • 数据持久存储。除非主动删除,否则一直存在。
  • 可以保存结构化数据,如对象、数组。

localStorage 缺点:

  • 不能存储敏感数据,因为数据可以被恶意获取。
  • 可能导致本地存储空间被占用过多。

sessionStorage 优点:

  • 数据临时存储,会话结束自动删除,不会占用过多本地存储空间。
  • 可以在同一个会话的不同页面中共享数据。

sessionStorage 缺点:

  • 数据不持久,会话结束随之删除。
  • 不能保存敏感数据,数据只在客户端,容易被获取。
三者异同
特性 Cookie localStorage sessionStorage
数据的生命周期 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效 除非被清除,否则永久保存 仅在当前会话下有效,关闭页面或浏览器后被清除
存放数据大小 4K左右 一般为5MB
与服务器端通信 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题 仅在客户端(即浏览器)中保存,不参与和服务器的通信
存储类型 只能存储字符串 可以存储字符串、布尔值、整数、浮点数、对象、数组等
作用域 在同源的窗口/标签页之间共享
典型使用场景 保存用户登录状态、购物车信息等 长期保存键值对数据,比如用户偏好设置或浏览历史 保存一个会话的信息,在用户登出或浏览器关闭之前一直存在

标签:Cookies,浏览器,localStorage,sessionStorage,Cookie,cookie
From: https://www.cnblogs.com/sr-biao/p/17348566.html

相关文章

  • Cookie禁用使用Session值方法
    Cookie禁用使用Session值方法:首先:    PHP中的Session在默认情况下是使用客户端的Cookie来保存SessionID的,所以当客户端的cookie出现问题的时候就会影响Session了。必须注意的是:Session不一定必须依赖Cookie,这也是Session相比Cookie的实用之处。当客户端的Cookie被禁用或出......
  • Cookie基本使用
    cookie是什么?是由服务器端生成,发送给User-Agent(一般指浏览器),浏览器将cookie以键值对的形式保存到某个目录下的文本文件内。下次请求该网站时就把cookie发送回服务器。(cookie就是一个小文件,浏览器对其大小一般限制在4k,用来记录一些信息(一般用作标识))为什么有cookie?web应用程......
  • session,cookie,token,jwt
    cookie,session,token,jwtCookiecookie是为了解决HTTP在状态管理上的不足,HTPP是无状态协议。目的是让服务端知道客户端的身份。cookie储存在客户端。Sessionsession是记录服务器和客户端会话状态的机制session是基于cookie实现的,session存储在服务器端,sessionid储存在客户端的co......
  • 11.Session与Cookie(自定义Session)
    Session与Cookie(自定义Session)课程目标:#熟悉Cookie、Session底层实现原理、自定义缓存、自定义Token、表单重复提交#解决方案、Servlet之Fileter解决XSS攻击。一、.会话管理入门1.1生活中会话我:小张,你会跳小苹果码?小张:会,怎么了?我:公司年会上要表演节目,你教教......
  • 用C#破解Chrome浏览器cookie值
    背景最近小编接到一个获取网站请求数据的需求,要求抓取网站某个页面请求的数据。我使用GoogleChrome浏览器查看了一下请求链接的传入参数,发现需要传入一个Token值才能获取数据。于是我在Chrome中登录后,通过Postman请求成功,并将Token存储到了Cookie中。然而问题又来了,在代码层面如......
  • cookie和session
    (一)cookie和session原理及区别cookie采用的是客户端的会话状态的一种储存机制。它是服务器在本地机器上存储的小段文本或者是内存中的一段数据,并随每一个请求发送至同一个服务器。session是一种服务器端的信息管理机制,它把这些文件信息以文件的形式存放在服务器的硬盘空间上(这是......
  • 爬取的数据存mysql中、加代理,cookie,header,加入selenium、布隆过滤器、scrapy-redis实
    上节回顾#1scrapy架构 -爬虫:写的一个个类-引擎: -调度器:排队,去重-下载器-pipline-下载中间件-爬虫中间件#2命令 -scrapystartproject项目名-scrapygensipder爬虫名网址-scrapycrawl爬虫名字-run.py#......
  • 在Express中使用Cookie和Session
    如果想要通过NodeJS使用cookie,那么你需要安装"cookie-parser"包,如果是session那么需要安装"cookie-session"安装方法:npminstallcookie-parser-Snpminstallcookie-session-S然后在服务端引用varcookieParser=require('cookie-parser');//cookievarcookieSessi......
  • 为何vs编译边出来的程序ebp-4存放的不是第一个局部变量?而是security_cookie——本质上
    快速识别 最后那个call就是比较存的随机数和ebp异或的值是否和之前是否一样:    探究security_cookie在程序中的作用 from:https://www.kn0sky.com/?p=66学习环境:Windows1020H2+VisualStudio2019前言在学习看反汇编程序的时候,使用VS2019编译的releas......
  • vuex存储和本地存储(localstorage、sessionstorage)的区别
    1.最重要的区别:vuex存储在内存,localstorage则以文件的方式存储在本地2.应用场景:vuex用于组件之间的传值,localstorage则主要用于不同页面之间的传值。3.永久性:当刷新页面时vuex存储的值会丢失,localstorage不会。注:很多朋友觉得用localstorage可以代替vuex,对于不变的数据确实可......