cookie、Web Storage
前端知识汇编
- 1. cookie
- 1.1 cookie的限制
- 1.2 cookie的构成
- 1.3 JavaScript中的cookie
- 1.4 子cookie
- 1.5 使用cookie的注意事项
- 2. Web Storage
- 2.1 Storage类型
- 2.2 sessionStorage对象
- 2.3 localStorage对象
- 2.4 存储事件
- 2.5 限制
1. cookie
cookie是客户端与服务器端进行会话时使用的一个能够在浏览器本地化存储的技术
1.1 cookie的限制
- 与特定域绑定,不被其他域访问,保证它不会被恶意利用
- 存储大小有限制,每个cookie不超过4kb(超出静默删除)
- 存储数量有限制,不同浏览器不同限制数量(一般每个域不超过50个在任何浏览器就能兼容;Safari和Chrome没有硬性限制)
1.2 cookie的构成
- 名称:唯一标识cookie的名称。不区分大小写,但为了兼容一些服务器软件最好保持区分大小写不同名。
- 值:存储在cookie里的字符串值。
- 域:cookie有效的域。发送到这个域的所有请求都会包含对应的cookie。
- 路径:请求URL中包含这个路径才会把cookie发送到服务器。
- 过期时间:表示何时删除cookie的时间戳。GMT格式。
- 安全标识:设置之后,只有使用SSL安全连接(https)的情况下才会把cookie发送到服务器。
1.3 JavaScript中的cookie
- 增
- BOM的document.cookie返回包含页面中所有有效的cookie的字符串(根据域、路径、过期时间和安全设置);
- 所有名和值都是URL编码,需要使用decodeURIComponent()解码;
- 通过document.cookie可以设置新的cookie字符串,不会覆盖之前的cookie,除非设置的是已有的cookie
- 设置cookie时只有cookie名和值是必须的
document.cookie = `${name}=${value};${expires}=${expiration_time};${path}=${domain_path};${domain}=${domain_name};${secure};`
- 读取
通过保存格式去解析document.cookie返回的字符串 - 删除
只需要把cookie的过期时间设为过去就能自动删除
1.4 子cookie
子cookie是在单个cookie存储的小块数据,本质上是使用cookie的值在单个cookie中存储多个键值对,来绕过浏览器对每个域cookie数的限制。
如:
name=name1=value1&name2=value2&name3=value3&name4=value4&name5=value5&name6=value6
1.5 使用cookie的注意事项
- 有一种HTTP-only的cookie可以在浏览器和服务器上设置,但只能在服务器上读取,js无法取得这种cookie的值
- 所有cookie都会作为请求头部由浏览器发送给服务器,所以cookie越大,请求完成的时间越长,需要考虑性能问题
- cookie不是保存在安全的环境中的,不要在cookie中保存敏感信息
2. Web Storage
Web Storage提供在cookie之外的存储会话数据的途径,提供跨会话持久化存储大量数据的机制。分为localStorage永久存储机制对象和sessionStorage跨会话存储机制对象。
2.1 Storage类型
Storage类型用于保存名/值对数据,存储上限有浏览器决定。方法:
clear():删除所有值;不在firefox中实现。getItem(name):取得给定name的值。key(index):取得给定位置的名称(不是值)。removeItem(name):删除给定name的名/值对。setItem(name, value):设置给定name的值。
Storage只能保存字符串类型,非字符串类型会自动转为字符串,在存取时要注意数据类型变化。
2.2 sessionStorage对象
- sessionStorage对象只存储会话数据,浏览器关闭时数据就会清掉。
- 因为sessionStorage对象与服务器会话紧密相关,所以在运行本地文件时不能使用。
- 现代浏览器用同步阻塞的方式存储数据;老版IE用异步的方式实现数据写入,会导致给数值赋值的时间和数据写入磁盘的时间存在延迟(少量数据时可以忽略不计),在IE8中可以在数据赋值前调用
begin()、之后调用commit()方法来强制坚数据写入磁盘。
2.3 localStorage对象
- 要访问同一个localStorage对象,页面必须来自用一个域(子域不可)、在相同的端口上使用相同的协议
- 存储在localStorage中的数据会保留到通过js删除或用户清空浏览器缓存。不会因为页面刷新、关闭窗口、标签页或重启浏览器而丢失。
2.4 存储事件
当Storage对象发生变化时(不区分sessionStorage和localStorage),都会在文档上触发storage事件。这个时间对象有以下4个属性:
- domain:存储变化对应的域
- key:被设置或删除的值
- newValue:键被设置的心智,若键被删除则为null
- oldValue:键变化之前的值
可以用以下代码监听到:
window.addEventListener("storage",(event) => console.log(event)
)
2.5 限制
- 客户端数据的大小限制是按照每个源(协议、域、端口)来设置的,因此每个源有固定大小的数据存储空间。
- 不同浏览器给localStorage和sessionStorage设置了不用的空间限制,但大多是会限制为每个源5MB
相关文章:
cookie、Web Storage
前端知识汇编 1. cookie1.1 cookie的限制1.2 cookie的构成1.3 JavaScript中的cookie1.4 子cookie1.5 使用cookie的注意事项 2. Web Storage2.1 Storage类型2.2 sessionStorage对象2.3 localStorage对象2.4 存储事件2.5 限制 1. cookie cookie是客户端与服务器端进行会话时使用…...
【rk3568】01-环境搭建
文章目录 1.开发板介绍1.1相关资源:1.2接口布局1.3屏幕1.4核心板引脚可复用资源 2.环境搭建2.1安装依赖包2.2git配置2.3安装sdk2.4sdk介绍2.5sdk编译 3.镜像介绍 1.开发板介绍 开发板:atk-rk3568开发板 eMMC:64G LPDDR4:4G 显示屏…...
编程笔记 html5cssjs 036 CSS概述
编程笔记 html5&css&js 036 CSS概述 一、什么是 CSS?二、样式非常重要三、CSS 语法四、CSS 注释五、示例 CSS (Cascading Style Sheets,层叠样式表),是一种用来为结构化文档(如 HTML 文档或 XML 应用)添加样式…...
Vue入门七(Vuex的使用|Vue-router|LocalStorage与SessionStorage和cookie的使用)
文章目录 一、Vuex1)理解vuex2)优点3)何时使用?4)使用步骤① 安装vuex② 注册vuex③ 引用vuex④ 创建仓库Store五个模块介绍 5)基本使用 二、Vue-router三、LocalStorage与SessionStorage、cookie的使用 一…...
多级缓存架构(三)OpenResty Lua缓存
文章目录 一、nginx服务二、OpenResty服务1. 服务块定义2. 配置修改3. Lua程序编写4. 总结 三、运行四、测试五、高可用集群1. openresty2. tomcat 通过本文章,可以完成多级缓存架构中的Lua缓存。 一、nginx服务 在docker/docker-compose.yml中添加nginx服务块。…...
写点东西《Docker入门(上)》
写点东西《Docker入门(上)》 环境变量 Docker 镜像 Docker CMD 与 ENTRYPOINT 有什么区别 Docker 中的网络: Docker 存储: Docker 是一个工具,允许开发人员将他们的应用程序及其所有依赖项打包到一个容器中。然后&…...
chatgpt实用技巧之二反问式提示
大家好,今天跟大家讲实用gpt的小技巧二、反问式提示 有时候不知道怎么给 GPT 提示词,这时候,就可以反问 GPT 如何更好地给提示词。如图片所示 更详细内容可以看下这篇: 按照 GPT 给出的:故事设定角色故事发展主题结局…...
【数据结构和算法】奇偶链表
其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 方法一:分离节点后合并 三、代码 3.1 方法一:分离节点后合并 四、复杂度分…...
MVC框架
文章目录 JSP 和 ServletMVC 的演进1. JSP Model 12. JSP Model 23. MVC 的一般化4. MVC 的变体 总结 JSP 和 Servlet 如果你有使用 Java 作为主要语言开发网站的经历,那么你一定听过别人谈论 JSP 和 Servlet。其中,Servlet 指的是服务端的一种 Java 写…...
学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研
之前博客介绍了NeRF-SLAM,其中对于3D Gaussian Splatting没有太深入介绍。本博文对3D Gaussian Splatting相关的一些工作做调研。 学习笔记之——NeRF SLAM(基于神经辐射场的SLAM)-CSDN博客文章浏览阅读967次,点赞22次࿰…...
Github Copilot 的使用方法和快捷键
Github Copilot是一个基于人工智能技术的代码自动补全工具,它可以为开发者提供实时的代码建议和自动生成代码片段。本文将详细介绍如何安装、设置和使用Github Copilot,并提供一些常用的快捷键来提高开发效率。 1. 安装和设置 1.1 下载并安装VS Code …...
开源iMES工厂管家 - 详细安装部署指南(图解)- 全网独稿
目录 一、服务器环境: 二、部署构成总览: 三、下载 node-v16.17.1-win-x64:Index of /download/release/v16.17.1/ 四、绿色安装 node-v16.17.1-win-x64 五、配置环境变量 六、检查 node-v16.17.1-win-x64 是否成功 七、执行命令组,安装组库与各种依赖 vue3环境配置…...
Codeforces Round 919 (Div. 2)
Problem - A - Codeforces n个约束条件 a x 求出满足n个约束条件的整数的个数 大于等于x,取最大的 小于等于x,取最小的 然后不等于x的,记录在区间范围内的个数,减去这些 #include<bits/stdc.h> #define endl \n #define …...
面向经验丰富的开发人员的最佳 Linux 发行版
在深入研究最佳 Linux 发行版之前,让我们回顾一下历史。到 2021 年,Linux 操作系统已经有 30 年的历史了,从作为开发者 Linus Torvalds 的个人项目开始,它已经走过了很长一段路。最初发布时,其源代码被分发给用户&…...
Rust-借用检查
Rust语言的核心特点是:在没有放弃对内存的直接控制力的情况下,实现了内存安全。 所谓对内存的直接控制能力,前文已经有所展示:可以自行决定内存布局,包括在栈上分配内存,还是在堆上分配内存;支…...
xcode安装及运行源码
抖音教学视频 目录 1、xcode 介绍 2、xcode 下载 3、xocde 运行ios源码 4、快捷键 1、xcode 介绍 Xcode 是运行在操作系统Mac OS X上的集成开发工具(IDE),由Apple Inc开发。Xcode是开发 macOS 和 iOS 应用程序的最快捷的方式。Xcode 具有…...
x-cmd pkg | czg - git commit 智能生成工具
目录 简介首次用户功能特点竞品和相关作品进一步探索 简介 czg 源于 commitizen/cz-cli 交互插件中 cz-git 的延伸项目,重新使用 TypeScript 编写的零依赖独立的 Node.js 命令行工具。旨在使用交互友好的方式,辅助用户生成规范的 git commit message 约…...
Go的并发练习题目
经典并发题目 现在有4个协程,分别对应编号为1,2,3,4,每秒钟就有一个协程打印自己的编号,要求编写一个程序,让输出的编号总是按照1,2,3,4,1,2,3,4这样的规律一直打印下去 type Token struct { }func newWorker(id int, ch chan Token, nextC…...
Python 网络编程之粘包问题
【一】粘包问题介绍 【1】粘包和半包 粘包: 定义: 粘包指的是发送方发送的若干个小数据包被接收方一次性接收,形成一个大的数据包。原因: 通常是因为网络底层对数据传输的优化,将多个小数据包组合成一个大的数据块一次…...
旧衣回收小程序搭建:降低企业成本,提高回收效率!
在人们环保意识提升下,旧衣回收行业受到了大众的关注,同时旧衣回收具有门槛低、利润大的优势。在我国,回收行业不仅帮助普通人就业获利,还对环保做出了较大贡献。因此,旧衣回收行业成为了当下的热门商业模式࿰…...
XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
