存储方式 - 前端学习

1. cookie是什么?你了解cookie吗?

        在计算机领域中,特指一种由服务器发送到用户浏览器并保存在用户计算机上的小型文本文件。这个文件可以被服务器用来识别用户身份、跟踪用户活动、保存用户设置等。它通常由名称、值、域名、路径、过期时间等字段组成

1.1 cookie有那些属性?

Cookie 中属性的解释:
        ● Name:cookie的名字
        ● Value:cooke的值
        ● Path:定义了Web站点上可以访问该Cookie的目录
        ● Expires / Max-Age:表示cookie的过期时间,也就是有效值,cookie在这个值之前都有效。
        ● Size:表示cookie的大小
        ● HttpOnly:值为true时,Cookie只会在Http请求头中存在,不能通过doucment.cookie(JavaScript)访问Cookie。
        ● Secure:值为true时,只能通过https来传输Cookie。
        ● SameSite
                ● 值为Strict,完全禁止第三方Cookie,跨站时无法使用Cookie。
                ● 值为Lax,允许在跨站时使用Get请求携带Cookie,下面有一个表格介绍Lax的Cookie使用情况。
                ● 值为None,允许跨站跨域使用Cookie,前提是将Secure属性设置为true。
       ● Priority:Cookie的优先级。值为Low/Medium/High,当Cookie数量超出时,低优先级的Cookie会被优先清除

 1.2. Cookie 的生命周期

以前学习cookie就只知道cookie的一种存储方式,但其实cookie有两种方式,一种是会话性,一种是持久性

        会话性:如果cookie为会话性,那么cookie仅会保存在客户端的内存中,当我们关闭客服端时cookie也就失效了;
        持久性:如果cookie为持久性,那么cookie会保存在用户的硬盘中,直至生存期结束或者用户主动将其销毁

Cookie 使用的常见方法(服务端):
        ● new Cookie(String name, String value):创建一个Cookie对象,必须传入cookie的名字和cookie的值
        ● getValue():得到cookie保存的值
        ● getName():获取cookie的名字
        ● setMaxAge(int expiry):设置cookie的有效期,默认为-1。这个如果设置负数,表示客服端关闭,cookie就会删除。0表示马上删除。正数表示有效时间,单位是秒。
        ● setPath(String uri):设置cookie的作用域
        ● response.addCookie(Cookie cookie):将cookie给客户端进行保存
        ● resquest.getCookies():得到客服端传过来的所有cookie对象

Cookie 使用的常见方法 (客户端):

        ● JavaScript 可以使用 document.cookie 属性来创建 、读取、及删除(覆盖) cookie

前端项目一般会对cookie进行封装

/*toString() 把 Date 对象转换为字符串toTimeString() 把 Date 对象的时间部分转换为字符串toDateString() 把 Date 对象的日期部分转换为字符串toGMTString() 请使用 toUTCString() 方法代替toUTCString() 根据世界时,把 Date 对象转换为字符串toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串toLocaleTimeString() 根据本地时间格式,把 Date 对象的时间部分转换为字符串toLocaleDateString() 根据本地时间格式,把 Date 对象的日期部分转换为字符串UTC() 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数valueOf() 返回 Date 对象的原始值setItem("键","值",未来到期的毫秒值);removeItem("键");getItem("键")clear() 清除所有cookiegetAllCookies() 返回所有cookie的键值对  组成一个对象*//** 根据键值设置cookie值,  [millisecond为过期的毫秒值] */
function setItem(key, value, millisecond) {let str = "";str = str + key + "=" + value;if (millisecond != "undefined") {// 现在的时间加上你限定的时间 就是到期时间let date = new Date(new Date().getTime() + millisecond).toUTCString();str += ";expires=" + date;}document.cookie = str;
}/**  根据键删除cookie
*/
function removeItem(key) {// 设定为 到期时间为 0 ,即可以删除cookiedocument.cookie = "" + key + "=" + "*;expires=" + new Date(new Date().getTime() - 1000).toUTCString();
}/**  根据键获取cookie值, 若未获取到返回 null
*/
function getItem(key) {let cookiesStr = document.cookie;if (cookiesStr == "") {return null;}let index = cookiesStr.indexOf(key + "=");if (index == -1) {return null;}index = index + key.length + 1;// let cookieStr = cookiesStr.substring(index)// 此key值的最后一个字符的序号let subIndex = cookieStr.indexOf(";");if (subIndex != -1) {// 截取出来cookieStr = cookieStr.substring(0, subIndex);}return cookieStr;
}/** 清除所有cookie */
function clear() {let cookieObj = getAllCookies();for (const key in cookieObj) {removeItem(key);}
}/** 获取所有cookie, 返回一个cookie对象 */
function getAllCookies() {let cookiesStr = document.cookie;let cookieObj = new Object();// 当前cookie为空时,返回空对象if (cookiesStr == "") {return cookieObj;}let cookieArr = cookiesStr.split(";");for (let index = 0; index < cookieArr.length; index++) {let cookieKey = cookieArr[index].substring(0, cookieArr[index].indexOf("=")).trim();let cookieVal = cookieArr[index].substring(cookieArr[index].indexOf("=") + 1).trim();cookieObj[cookieKey] = cookieVal;}return cookieObj;
}

1.3 总结

总结:Cookie就是一些数据,用于存储服务器返回给客服端的信息,客户端进行保存。在下一次访问该网站时,客户端会将保存的cookie一同发给服务器,服务器再利用cookie进行一些操作。利用cookie我们就可以实现自动登录,保存游览历史,身份验证等功能。

2. 前端的储存方式有那些?

cookies在 HTML5 标准前本地储存的主要⽅式,优点是兼容性好,请求头⾃带 cookie⽅便,缺点是⼤⼩只有4k,⾃动请求头加⼊cookie 浪费流量,每个 domain 限制 20 个 cookie,使⽤起来麻烦,需要⾃⾏封装
localStorageHTML5 加⼊的以键值对(Key-Value)为标准的⽅式,优点是操作⽅便,永久性储存(除⾮⼿动删除),⼤⼩为5M,兼容IE8+

localStorage.setItem("key","value");//存储
localStorage.getItems(key);//按key进行取值
localStorage.removeItems(key);//按key单个删除
localStorage.clear();//删除全部数据
localStorage.length;//获得数据的数量
localStorage.valueOf();//获取全部值


sessionStorage与 localStorage 基本类似,区别是sessionStorage当⻚⾯关闭后会被清理,⽽且与 cookie、localStorage 不同,他不能在所有同源窗⼝中共享,是会话级别的储存⽅式;

sessionStorage.setItem("key","value");//存储
sessionStorage.getItems(key);//按key进行取值
sessionStorage.removeItems(key);//按key单个删除
sessionStorage.clear();//删除全部数据
sessionStorage.length;//获得数据的数量
sessionStorage.valueOf();//获取全部值


Web SQL:2010 年被 W3C 废弃的本地数据库数据存储⽅案,但是主流浏览器(⽕狐除外)都已经有了相关的实现,web sql 类似于SQLite,是真正意义上的关系型数据库,⽤sql进⾏操作,当我们⽤JavaScript时要进⾏转换,较为繁琐
IndexedDB是被正式纳⼊HTML5 标准的数据库储存⽅案,它是NoSQL数据库,⽤键值对进⾏储存,可以进⾏快速读取操作,⾮常适合web场景,同时⽤JavaScript 进⾏操作会⾮常便

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/333583.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【pm2 - sdk 集成到程序中,典型用法】

pm2作为一款进程管理神器&#xff0c;除了命令行的启动方式外&#xff0c;其还对应有sdk&#xff0c;集成到程序中&#xff0c;我们可以连接到已有或创建pm2的守护进程&#xff0c;与其进行交互&#xff0c;动态&#xff0c;编程式地控制程序的启停等。以下为示例&#xff1a; …

酷开科技大屏营销,多元需求唤醒“客厅经济”

随着科技的发展和消费者习惯的变化&#xff0c;OTT大屏营销正逐渐成为客厅经济的新风向。OTT不仅改变了人们获取信息和娱乐的方式&#xff0c;也为品牌营销提供了新的机遇和挑战&#xff0c;OTT大屏营销已经成为客厅经济的重要组成部分。酷开科技通过其自主研发的智能电视操作系…

PHP框架 Laravel

现在因为公司需求&#xff0c;需要新开一个Laravel框架的项目&#xff0c;毫无疑问&#xff0c;我又被借调过去了&#xff0c;最近老是被借调&#xff0c;有点阴郁&#xff0c;不过反观来看&#xff0c;这也是好事&#xff0c;又可以复习和巩固一下自己的知识点&#xff0c;接下…

数组基础-笔记

数组是非常基础的数据结构&#xff0c;实现运用和理解是两回事 数组是存放在连续内存空间上的相同类型的数据的集合 可以方便的通过下表索引的方式获取到下标下对应的数据。 举一个字符数组的例子&#xff1a; 注意两点&#xff1a; 数组下标从0开始 数组内存空间的地址是连…

yarn dev启动项目时遇到的问题

用yarn dev启动项目的时候&#xff0c;遇到了如下问题&#xff1a; 这个时候&#xff0c;我们可以这样解决&#xff1a;用nvm list 看下已安装的node版本&#xff0c;用nvm use切换一下node版本&#xff0c;当然前提是你已经安装了nvm。

C++: 二叉搜索树及实现

目录 一、二叉搜索树的概念 二、二叉搜索树的操作 2.1插入 2.2删除 1.有左子树&#xff0c;无右子树 2.有右子树&#xff0c;无左子树 3.有左子树和右子树 三、二叉搜索树的实现 要点 前言&#xff1a;为了学习map和set&#xff0c;需要先学二叉搜索树作为铺垫。 一、…

[论文笔记]Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

引言 今天带来思维链论文 Chain-of-Thought Prompting Elicits Reasoning in Large Language Models的笔记。 作者探索了如何通过生成一系列中间推理步骤的思维链&#xff0c;显著提升大型语言模型在进行复杂推理时的能力。 1 总体介绍 语言模型的规模扩大已被证明能够带来…

[数据集][目标检测]伤口检测数据集VOC+YOLO格式2760张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2760 标注数量(xml文件个数)&#xff1a;2760 标注数量(txt文件个数)&#xff1a;2760 标注…

课时138:变量进阶_变量实践_综合案例

2.1.3 综合案例 学习目标 这一节&#xff0c;我们从 免密认证、脚本实践、小结 三个方面来学习 免密认证 案例需求 A 以主机免密码认证 连接到 远程主机B我们要做主机间免密码认证需要做三个动作1、本机生成密钥对2、对端机器使用公钥文件认证3、验证手工演示 本地主机生成…

调整GIF图大小的方法是什么?分享4个

调整GIF图大小的方法是什么&#xff1f;在数字化时代&#xff0c;GIF以其独特的动图魅力&#xff0c;成为了网络交流中不可或缺的一部分。无论是社交媒体、博客文章还是工作汇报&#xff0c;一个恰到好处的GIF图往往能有效吸引观众的注意&#xff0c;传递信息&#xff0c;但过大…

YOLOv8+PyQt5面部表情检测系统完整资源集合(yolov8模型,从图像、视频和摄像头三种路径识别检测,包含登陆页面、注册页面和检测页面)

1.资源包含可视化的面部表情检测系统&#xff0c;基于最新的YOLOv8训练的面部表情检测模型&#xff0c;和基于PyQt5制作的可视化面部表情检测系统&#xff0c;包含登陆页面、注册页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的八类面部表情&#xff1a…

3D开发工具HOOPS在BIM系统中的应用

建筑信息模型是一种革命性的建筑设计、施工和管理方法。它通过创建和利用数字信息来优化建筑项目的设计、施工和运营过程。在这个过程中&#xff0c;3D开发工具HOOPS扮演着至关重要的角色&#xff0c;为BIM系统提供了强大的技术支持和丰富的功能。HOOPS中文网http://techsoft3d…

ThreadLocal简介

Thread类中&#xff0c;有个ThreadLocal.ThreadLocalMap 的成员变量。 ThreadLocalMap内部维护了Entry数组&#xff0c;每个Entry代表一个完整的对象&#xff0c;key是ThreadLocal本身&#xff0c;value是ThreadLocal的泛型对象值 public void set(T value) {Thread t Thread…

前端开发之xlsx的使用和实例,并导出多个sheet

前端开发之xlsx的使用和实例 前言效果图1、安装2、在页面中引用3、封装工具类&#xff08;excel.js&#xff09;4、在vue中使用 前言 在实现业务功能中导出是必不可少的功能&#xff0c;接下来为大家演示在导出xlsx的时候的操作 效果图 1、安装 npm install xlsx -S npm inst…

Android HAL到Framework

一、为什么需要Framwork? Framework实际上是⼀个应⽤程序的框架&#xff0c;提供了很多服务&#xff1a; 1、丰富⽽⼜可扩展的视图&#xff08;Views&#xff09;&#xff0c; 可以⽤来构建应⽤程序&#xff0c;它包括列表&#xff08;lists&#xff09;&#xff0c;⽹格&am…

代码随想录算法训练营第20天 |● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树

文章目录 前言654.最大二叉树思路方法一 递归法方法一2 老师的优化递归法 617.合并二叉树思路方法一 递归法方法二 迭代法 700.二叉搜索树中的搜索思路方法一 递归法方法二 迭代法 98.验证二叉搜索树思路方法一 使用数组方法二 不使用数组代码注意点&#xff1a; 方法二 使用双…

SecureCRT for Mac注册激活版:专业终端SSH工具

SecureCRT是一款支持SSH&#xff08;SSH1和SSH2&#xff09;的终端仿真程序&#xff0c;简单地说是Windows下登录UNIX或Linux服务器主机的软件。 SecureCRT支持SSH&#xff0c;同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过…

零售EDI:Target DVS EDI项目案例

Target塔吉特是美国一家巨型折扣零售百货集团&#xff0c;与全球供应商建立长远深入的合作关系&#xff0c;目前国内越来越多的零售产品供应商计划入驻Target。完成入驻资格审查之后&#xff0c;Target会向供应商提出EDI对接邀请&#xff0c;企业需要根据指示完成供应商EDI信息…

Vue学习笔记3——事件处理

事件处理 1、事件处理器&#xff08;1&#xff09;内联事件处理器&#xff08;2&#xff09;方法事件处理器 2、事件参数3、事件修饰符 1、事件处理器 我们可以使用v-on 指令(简写为)来监听DOM事件&#xff0c;并在事件触发时执行对应的JavaScript。 用法: v-on:click"me…

[自动驾驶技术]-6 Tesla自动驾驶方案之硬件(AI Day 2021)

1 硬件集成 特斯拉自动驾驶数据标注过程中&#xff0c;跨250万个clips超过100亿的标注数据&#xff0c;无论是自动标注还是模型训练都要求具备强大的计算能力的硬件。下图是特斯拉FSD计算平台硬件电路图。 1&#xff09;神经网络编译器 特斯拉AI编译器主要针对PyTorch框架&am…