第128篇:浏览器存储(cookie、webStorage、 IndexedDB)
好家伙,本篇为《JS高级程序设计》第二五章“浏览器存储”学习笔记
我们先来讲个故事
概括一下,就是
有个人通过网络平台非法购买了大量“cookie”数据。
突破平台封控,冒用他人新用户身份,非法骗取新用户优惠券。
拿着优惠券低价购入商品,随后转卖并从中赚取差价。
再将使用过的“cookie”数据再次低价转卖或转赠他人,从中获利。(太狠了)
随后我们回到正题
我们进入一个需要登陆的网站,我们注册登录
随后,我们希望每次进入的时候,都不再需要手动输入信息登录,
我们希望浏览器中保存着我们的信息
于是,直接在客户端存储用户信息的需求出现了
常见存储方式主要有两种:cookie、webStorage(localStorage和sessionStorage)
1.cookie
HTTP cookie 通常也叫作 cookie,最初用于在客户端存储会话信息。
这个规范要求服务器在响应 HTTP 请求时,通过发送 Set-Cookie HTTP 头部包含会话信息。
1.1.cookie 的限制
cookie 是与特定域绑定的。设置 cookie 后,它会与请求一起发送到创建它的域。
这个限制能保证 cookie 中存储的信息只对被认可的接收者开放,不被其他域访问。
不超过 300 个 cookie;
每个 cookie 不超过 4096 字节;
每个域不超过 20 个 cookie;
每个域不超过 81 920 字节。
1.2.cookie的组成
cookie 的限制(来看看他长什么样子)


名称:唯一标识 cookie 的名称。cookie 名不区分大小写
值:存储在 cookie 里的字符串值。这个值必须经过 URL 编码。
域:cookie 有效的域。发送到这个域的所有请求都会包含对应的 cookie。
路径:请求 URL 中包含这个路径才会把 cookie 发送到服务器。
过期时间:表示何时删除 cookie 的时间戳(
安全标志:设置之后,只在使用 SSL 安全连接的情况下才会把 cookie 发送到服务器。
1.3.使用
所有名和值都是 URL 编码的,因此必须使用 decodeURIComponent()解码。
class CookieUtil {
static get(name) {
let cookieName = `${encodeURIComponent(name)}=`,
cookieStart = document.cookie.indexOf(cookieName),
cookieValue = null;
if (cookieStart > -1) {
let cookieEnd = document.cookie.indexOf(";", cookieStart);
if (cookieEnd == -1) {
cookieEnd = document.cookie.length;
}
cookieValue = decodeURIComponent(document.cookie.substring(cookieStart +
cookieName.length, cookieEnd));
}
return cookieValue;
}
static set(name, value, expires, path, domain, secure) {
let cookieText =
`${encodeURIComponent(name)}=${encodeURIComponent(value)}`
if (expires instanceof Date) {
cookieText += `; expires=${expires.toGMTString()}`;
}
if (path) {
cookieText += `; path=${path}`;
}
if (domain) {
cookieText += `; domain=${domain}`;
}
if (secure) {
cookieText += "; secure";
}
document.cookie = cookieText;
}
static unset(name, path, domain, secure) {
CookieUtil.set(name, "", new Date(0), path, domain, secure);
}
};
// 设置 cookie
CookieUtil.set("name", "panghu");
// 读取 cookie
alert(CookieUtil.get("panghu")); // "panghu"
(然而我这并没有出现正确结果)
2.Web Storage
Web Storage 的目的是解决通过客户端存储不需要频繁发送回服务器的数 据时使用 cookie 的问题。
分为localStorage 和 sessionStorage
2.1.sessionStorage对象
sessionStorage 对象只存储会话数据,这意味着数据只会存储到浏览器关闭。
存储在 sessionStorage 中的数据不受页面刷新影响,可以在浏览器崩溃 并重启后恢复。
基本用法(增删查改)
// 使用方法存储数据
sessionStorage.setItem("name", "胖虎");
// 使用属性存储数据
sessionStorage.book = "好书"; // 使用方法取得数据
let name = sessionStorage.getItem("name");
// 使用属性取得数据
let book = sessionStorage.book; console.log(name+book)
// 使用 delete 删除值
delete sessionStorage.name;
// 使用方法删除值
sessionStorage.removeItem("book"); console.log(sessionStorage);

2.2.localStorage 对象
要访问同一个 localStorage 对象,页面必须来自同一个域(子域不可以)、在相同的端 口上使用相同的协议。
localStorage和sessionStorage的Api用法差不太多
// 使用方法存储数据
localStorage.setItem("name", "余华");
// 使用属性存储数据
localStorage.book = "活着";
// 使用方法取得数据
let name = localStorage.getItem("name");
// 使用属性取得数据
let book = localStorage.book; console.log(name+book) // 使用 delete 删除值
delete localStorage.name;
// 使用方法删除值
localStorage.removeItem("book"); console.log(localStorage);

存储在 localStorage 中的数据会保留到通过 JavaScript 删除或者用户 清除浏览器缓存。
localStorage 数据不受页面刷新影响,也不会因关闭窗口、标签页或重新启动浏览 器而丢失
3.IndexedDB
嗯,这玩意就是浏览器中的数据库
IndexedDB 背后的思想是创造一套 API,方便 JavaScript 对象的 存储和获取,同时也支持查询和搜索
前端本地存储数据库IndexedDB完整教程 - 掘金 (juejin.cn)
4.题目
1.说出cookie、localStorage和sessionStorage三者的不同点和相同点

图片来自浅谈浏览器存储(cookie、localStorage、sessionStorage) - 喵小Q - 博客园 (cnblogs.com)
第128篇:浏览器存储(cookie、webStorage、 IndexedDB)的更多相关文章
- 浏览器存储(cookie、localStorage、sessionStorage)
互联网早期浏览器是没有状态维护,这个就导致一个问题就是服务器不知道浏览器的状态,无法判断是否是同一个浏览器.这样用户登录.购物车功能都无法实现,Lou Montulli在1994年引入到web中最终纳 ...
- BOM / URL编码解码 / 浏览器存储
BOM 浏览器对象模型 BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的.可以与浏览器窗口进行互动的 ...
- 如何从桌面程序向浏览器传递cookie或自定义header
类似问题 从c#程序启动ie并传递cookie 打开默认浏览器并传递cookie 打开一个web浏览器使用c#应用程序并添加请求头 猜想 从wpf程序打开默认浏览器并定位到一个url ,并且向这个ur ...
- 深入了解浏览器存储:对比Cookie、LocalStorage、sessionStorage与IndexedDB
摘要: 对比Cookie.LocalStorage.sessionStorage与IndexedDB 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 随着移动网络的发展与演化,我 ...
- 离线应用与客户端存储(cookie storage indexedDB)
离线检测 HTML5定义一个属性:navigator.onLine的属性.这个属性值为true,表示设备在线,值为false,表示设备离线.为了更好的确定网络是否可用,HTML5还定义了两个事件.这两 ...
- 浅谈浏览器存储(cookie、localStorage、sessionStorage)
今天我们从前端的角度了解一下浏览器存储,我们常见且常用的存储方式主要由两种:cookie.webStorage(localStorage和sessionStorage).下面我们来一一认识它们. Co ...
- cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中(转)
基本概念:cookie是指web浏览器存储的少量数据,该数据会在每次请求一个相关的URL时自动传到服务器中. 以博客园为例,我们看看cookie有哪些属性: 1.Name:cookie的名称: 2.V ...
- Node.js_express_浏览器存储技术 Cookie(服务器将少量数据交于浏览器存储管理)
浏览器存储技术 Cookie 服务器将少量数据交于浏览器存储管理 解决 http 无状态协议的问题(无法区分多次请求是否发送自同一客户端) 一个网页一般最多 20个的 cookie,每个 cookie ...
- 浏览器存储:cookie
Cookie是什么:cookie是指存储在用户本地终端上的数据,同时它是与具体的web页面或者站点相关的.Cookie数据会自动在web浏览器和web服务器之间传输,也就是说HTTP请求发送时,会把保 ...
- 原生JavaScript常用本地浏览器存储方法二(cookie)
JavsScript Cookie概述 cookie是浏览器提供的一种机制,它将document对象的cookie属性提供给JavaScript.可以由JavaScript对其进行控制,而并不是Jav ...
随机推荐
- [转贴]汉字编码:GB2312, GBK, GB18030, Big5
汉字编码:GB2312, GBK, GB18030, Big5 https://www.cnblogs.com/malecrab/p/5300497.html 前一篇博文:ANSI是什么编码?中有这样 ...
- Chrome 下载地址
今天同事找到一个网页 感觉非常好用 这里保存并且推荐一下 https://www.chromedownloads.net/chrome64win-stable/
- Spring源码之XML文件中Bean标签的解析1
读取XML文件,创建对象 xml文件里包含Bean的信息,为了避免多次IO,需要一次性读取xml文件中所有bean信息,加入到Spring工厂. 读取配置文件 new ClassPathResourc ...
- 人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF
人工智能LLM模型:奖励模型的训练.PPO 强化学习的训练.RLHF 1.奖励模型的训练 1.1大语言模型中奖励模型的概念 在大语言模型完成 SFT 监督微调后,下一阶段是构建一个奖励模型来对问答对作 ...
- 3.2 DLL注入:远程APC异步注入
APC(Asynchronous Procedure Call)异步过程调用是一种Windows操作系统的核心机制,它允许在进程上下文中执行用户定义的函数,而无需创建线程或等待OS执行完成.该机制适用 ...
- DataSet类型转换实体
查询DataSet类型无法对每条数据进行循环转换,利用泛型对象使用反射机制将对象相关属性进行自动赋值. 基础调用 DataSet ds = DbHelper.Query(SQL); if (ds.Ta ...
- 图(树)的深度优先遍历dfs
图的深度优先遍历 深度优先,即对于一个图或者树来说,在遍历时优先考虑图或者树的单一路径的深度.示意图如下 即深度优先搜索的核心就是对一个路径一直向下搜索,当搜索到头时就回溯到前一状态再寻找别的路 深搜 ...
- 西门子SIMATIC LPMLV30 库的模式和状态管理器
从基于S7-1200 / S7-1500的OMAC PackML V3.0获取到的文章内容,用于记录查看 基本信息 根据PackML_V3.0,该库包含了用于机械模式和状态管理器的功能模块. • 机械 ...
- 【Unity3D】人体模型及动画
1 前言 2D动画 中初步了解了 Animation 和 Animator,本文将进一步学习 3D 动画,并介绍 人体模型相关内容. 模型制作软件主要有:3DMax.Maya,模型存储格式主要 ...
- SpringBoot+Shiro+LayUI权限管理系统项目-1.项目介绍
1.项目介绍 本项目旨在打造一个基于RBAC架构模式的通用的.并不复杂但易用的权限管理系统.通过本项目可以较好的理解权限系统的常见业务同时学习掌握Springboot和Shiro等诸多技术点.需要的朋 ...