5.浏览器存储

1.浏览器本地存储方式

(1)Cookie

  • 特性:

    • 名称创建后不可修改。
    • 遵循同源策略,不能跨域名共享。
    • 每个域名下Cookie数量和大小受限(约20个,每个4KB)。
    • 安全性问题:易被拦截,用于会话劫持。
    • 随每次HTTP请求自动发送至服务器。
  • 使用场景:

    • 会话管理:与服务器端的Session配合,存储Session ID,识别用户会话。
    • 用户偏好设置:保存用户的界面设置、语言偏好等不敏感信息。

(2) LocalStorage

  • 优点:

    • 较大的存储空间(通常5MB)。
    • 持久存储,不随浏览器关闭而消失。
    • 数据仅存储在客户端,减少网络流量。
  • 缺点:

    • 面临兼容性问题,如IE8及更低版本不支持。
    • 隐私模式下不可用。
    • 同源策略限制访问。
Javascript
// 数据保存到localStorage
localStorage.setItem('username', 'John Doe');
// 从 localStorage 获取数据
let username = localStorage.getItem('username');
// 从 localStorage 删除保存的数据
localStorage.removeItem('username');
// 清空所有localStorage 保存的数据
localStorage.clear();
// 获取键名key
let key = localStorage.key(index);
  • 使用场景:
    • 用户设置:存储用户选择的界面主题、字体大小等个性化设置。
    • 离线数据缓存:保存应用数据,以便在离线状态下使用。

(3) SessionStorage

  • 特点:

    • 类似LocalStorage,但数据仅在当前浏览器窗口或标签页有效。
    • 会话存储,关闭窗口或标签页后,数据会被清除。
    • 同源策略限制,且在同源下的不同窗口间不共享数据。
// 数据保存到sessionStorage
sessionStorage.setItem('username', 'John Doe');
// 从 sessionStorage获取数据
let username = sessionStorage.getItem('username');
// 从 sessionStorage删除保存的数据
sessionStorage.removeItem('username');
// 清空所有sessionStorage保存的数据
sessionStorage.clear();
// 获取键名key
let key = sessionStorage.key(index);
  • 使用场景:

    • 临时数据存储:保存表单填写过程中的草稿,防止意外刷新丢失数据。
    • 临时身份验证:存储临时的用户身份验证信息,如临时登录状态,直到关闭页面。

2.Cookie有哪些字段及对应的作用

  1. Name: 定义了Cookie的标识符,用于区分其他Cookie。
  2. Value: 存储Cookie的具体信息或数据,例如会话ID、用户偏好等。
  3. Size: 表明Cookie的大小,尽管这不是一个常见的直接操作字段,但了解它有助于避免超过浏览器对Cookie大小的限制。
  4. Path: 指定了哪些路径下的页面可以访问该Cookie。默认是当前页面的路径,可以根据需要设置为更宽泛或更具体的路径。
  5. Domain: 指定了哪些域名可以访问此Cookie。子域名通常也可以访问父域名设置的Cookie,有助于实现单点登录等功能。
  6. Secure: 当设为true时,指示浏览器仅在通过HTTPS连接时发送Cookie,增强了数据传输的安全性。
  7. HTTPOnly:设为true时,表示这个Cookie不能被客户端JavaScript访问,有助于防范跨站脚本(XSS)攻击,保护Cookie信息不被恶意脚本窃取。
  8. Expires/Max-Age: 指定Cookie的有效期。可以是一个具体日期时间(Expires),或者从创建时间开始的秒数(Max-Age)。如果未设置,则Cookie将在会话结束后(即浏览器关闭时)失效,称为会话Cookie。
属性名描述作用详解
NameCookie的标识符用于区分不同的Cookie,每个Cookie通过其Name唯一确定。
Value存储的具体信息或数据可包含会话ID、用户偏好设置、认证信息等,依据应用需求自定义内容。
SizeCookie的大小非直接操作字段,了解其大小有助于避免超出浏览器对Cookie大小的限制(通常约4KB)。
Path指定可访问该Cookie的页面路径默认为当前页面路径,可设置为更宽泛或更精确的路径以控制Cookie的可见性。
Domain指定哪些域名可以访问此Cookie支持子域名访问父域名Cookie,有利于实现单点登录等特性。
Secure是否仅在HTTPS连接时发送Cookie设为true增加安全性,确保敏感数据仅通过HTTPS安全连接传输。
HTTPOnly控制Cookie是否可被客户端JavaScript访问设为true可以防止XSS攻击,保护Cookie信息不被恶意脚本窃取。
Expires/Max-AgeCookie的有效期设定可设定具体过期日期(Expires)或生存时间(Max-Age,单位秒),未设定则为会话Cookie,随浏览器关闭失效。

这些属性共同控制着Cookie的存储、读取、有效期以及安全性,是Web应用中处理用户状态、认证和个性化设置的关键机制。

3.Cookie、LocalStorage和SessionStorage区别

Cookie

  • 用途:最初设计用于维护用户会话状态,如用户认证信息。服务器可以通过Set-Cookie头部在响应中设置Cookie,浏览器之后会自动在同源请求的HTTP头部中带上这些Cookie。
  • 存储量: 通常限制在4KB左右,对于现代Web应用来说,这在存储大量数据时显得捉襟见肘。
  • 生命周期: 可以设置为会话级别(浏览器关闭即失效)或指定一个过期时间。
  • 安全性: 易受到跨站脚本攻击(XSS)和中间人攻击,特别是当敏感数据如认证凭证未经加密存储时。
  • 跨域: 默认情况下,Cookie遵循同源策略,但可以通过设置domain属性来实现一定程度的跨域共享。

sessionStorage

  • 用途: 适用于存储会话级别的信息,如临时的表单数据。它在页面会话期间有效,即浏览器窗口或标签页关闭后数据就会被清除。
  • 存储量: 大多现代浏览器支持至少5MB的存储空间,远超Cookie。
  • 生命周期: 当浏览器窗口或标签页关闭时,数据自动删除。
  • 安全性:相比Cookie,不太容易受到XSS攻击,因为它不能通过JavaScript的document.cookie访问,但仍需注意在页面内防止数据泄露。
  • 跨域: 不支持跨域共享,严格遵循同源策略。

localStorage

  • 用途: 适合长期存储用户偏好设置、客户端数据缓存等不需要服务器交互的数据。
  • 存储量: 同sessionStorage,提供相对较大的存储空间。
  • 生命周期: 持久化存储,除非用户主动清除浏览器数据或通过JavaScript代码删除,否则数据一直存在。
  • 安全性: 同样面临XSS攻击的风险,但没有跨站请求伪造(CSRF)的风险,因为不随HTTP请求发送。
  • 跨域: 同sessionStorage,不支持跨域访问。
特性CookieLocalStorageSessionStorage
存储位置客户端和随HTTP请求发送客户端浏览器客户端浏览器
容量限制通常4KB左右一般为5MB或更大一般为5MB或更大
生命周期可设置,随会话或指定时间结束持久存储,除非主动删除会话结束时(浏览器关闭)
同源策略遵循遵循遵循
跨域共享有限支持(需服务器设置)不支持不支持
安全性问题易受XSS和中间人攻击易受XSS攻击,不随请求发送易受XSS攻击,不随请求发送
用途举例认证信息、偏好设置长期用户数据缓存、配置临时数据、表单输入暂存
APIdocument.cookiewindow.localStoragewindow.sessionStorage

当应对更大数据量的本地存储需求时,浏览器的IndexedDB成为优选方案。这是一种内置的非关系型数据库存储技术,专为客户端设计,能够高效存储和检索大量结构化数据。与Cookie、LocalStorage、SessionStorage相比,IndexedDB不仅存储容量更大,还支持创建索引、事务处理等高级功能,非常类似于NoSQL数据库,适用于构建需要处理大量数据的Web应用,如离线存储、用户生成内容的缓存等场景。通过使用IndexedDB,开发者可以克服传统本地存储在容量和性能上的局限,实现更复杂的数据管理逻辑。

IndexedDB

IndexedDB用于存储大量结构化或非结构化数据,提供了远超上述三种的存储能力,理论上受限于用户设备的可用空间。开发者依然需要注意防止XSS和CSRF攻击,但提供了更灵活的数据访问控制。

特点:
  1. 键值对存储与对象仓库:IndexedDB 通过对象仓库(Object Store)组织数据,每个对象仓库可以看作是一个表,其中的数据以键值对形式存在。键可以是简单的字符串或数字,也可以是复合键(KeyPath),确保数据的唯一性和高效查询。
  2. 异步API设计:所有的读写操作都是异步的,这意味着 IndexedDB操作不会阻塞用户界面线程,提高了应用的响应性和用户体验,特别适合处理大量数据时保持应用流畅。
  3. 事务处理:通过事务(Transactions)保证数据的一致性和完整性。事务可以包含多个操作,并且支持不同的隔离级别,如果事务中的任何操作失败,所有操作都会被回滚,确保数据状态不被破坏。
  4. 同源策略:遵循同源安全策略,确保数据只能被来自同一源的脚本访问,增强了安全性,防止数据泄露给恶意网站。
  5. 大容量存储:相比LocalStorage通常几MB的限制,IndexedDB提供了更大的存储空间,通常至少有250MB,某些现代浏览器更是提供了几乎不受限的存储空间,适合存储大量应用数据或离线缓存。
  6. 丰富的数据类型支持:除了基本的数据类型,IndexedDB还可以直接存储JavaScript对ArrayBuffer以及Blob对象,这对于存储图片、音频、视频等二进制大文件非常有用,使得Web应用能够实现更多样化的功能。
  7. 索引优化查询:允许在对象仓库上创建索引,通过索引可以快速查找和过滤数据,提高数据检索效率,特别是对于复杂的查询条件支持良好

4.前端储存的⽅式

  1. Cookies:主要用于在客户端存储小量数据,随每次HTTP请求发送至服务器,适用于存储认证信息、偏好设置等,但受限于大小和性能问题。
  2. LocalStorage: HTML5引入的存储API,提供持久化的本地存储,适合存储较大量的数据,如用户设置,且不随HTTP请求发送,减少了网络流量。
  3. SessionStorage: 同样是HTML5的一部分,用于存储会话级别的数据,当浏览器窗口关闭时数据会被清除,适合存储临时性的信息。
  4. IndexedDB: 一个强大的客户端存储数据库,特别适合处理大量结构化数据,支持事务处理、索引和查询,是NoSQL数据库,适用于复杂的客户端数据存储需求。
  5. Web SQL:虽已被W3C废弃,但在一些浏览器中仍有实现,它允许在客户端使用SQL查询语言操作数据库,但由于标准废弃,新项目不推荐使用。
  6. Cache API: 包括Service Worker Cache和Browser Cache,用于存储网络资源(如图片、脚本、样式表等),以加速页面加载和实现离线访问能力。
  7. File System API: 允许Web应用在用户授权的情况下读写用户计算机的文件系统,虽然不直接用于常规数据存储,但在某些场景下可以作为数据持久化的一种方式。
  8. URLSearchParams: 虽然严格来说不是存储技术,但可以通过URL的查询字符串传递和存储轻量级数据,特别是在页面间传递状态时。
  9. Service Workers: 结合Cache API,可以创建完全离线体验的应用,通过拦截网络请求并在本地存储中查找或回填数据。
  10. Application Cache (AppCache): 虽已被弃用,但曾是HTML5中用于实现离线存储应用资源的技术,现已被Service Workers和Cache API取代。

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

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

相关文章

MoonBit 周报 Vol.46:支持32位无符号整数!

MoonBit 更新 支持了 32 位无符号整数 let num 100U // 32位无符号整数的字面量需要后缀U在 wasm 后端导出返回值类型为 Unit 的函数时,之前导出函数的类型中会有 (result i32),现在 MoonBit 编译器会自动生成一个没有返回值 wrapper 函数&#xff0c…

爬虫day3

爬虫如何提高效率? 我们可以选择多线程,多进程,协程等操作完成异步爬取。 异步:把一个变成多个 线程:执行单位 进程:资源单位,每一个进程至少有一个线程 if __name__ __main__: print(&qu…

都说HCIE“烂大街”了,说难考都是假的?

在网络技术领域,华为认证互联网专家(HCIE)长期以来被视为一项高端认证,代表着专业技能和知识水平。 然而,近几年来,考证的重视度直线上升,考HCIE的人越来越多了,考过的人好像也越来越…

C++ | Leetcode C++题解之第162题寻找峰值

题目&#xff1a; 题解&#xff1a; class Solution { public:int findPeakElement(vector<int>& nums) {int n nums.size();// 辅助函数&#xff0c;输入下标 i&#xff0c;返回一个二元组 (0/1, nums[i])// 方便处理 nums[-1] 以及 nums[n] 的边界情况auto get …

在dolphinDB上直接保存一个dataframe为分布式数据表

步骤1&#xff1a;获取链接 import dolphindb as ddb from loguru import loggerdef get_dolphin_session():"""获取dolphinDB的session"""dolphin_config {"host": "127.0.0.1","port": 13900,"username&…

android adb常用命令集

1、系统调试 #adb shell&#xff1a;进入设备的 shell 命令行界面&#xff0c;可以在此执行各种 Linux 命令和特定的 Android 命令。 #adb shell dumpsys&#xff1a;提供关于系统服务和其状态的详细信息。 #adb logcat&#xff1a;实时查看设备的日志信息。可以使用过滤条件来…

arco:a-cascader级联选择器使用及回显

arco 的 a-cascader 级联选择器的回显必须是最后一级 例如&#xff1a;湖北->武汉->光谷 此时传入 wuhan 是不会回显的&#xff0c;必须传入武汉的最后一级 guanggu 才可以。 <a-form-item field"address" label"所在区域"><a-cascader v-…

图片自由变大变小,你要的,就是你想的。

由于经常要写文档和宣传彩页&#xff0c;里面都有涉及图片&#xff0c;强制调整了图片大小&#xff0c;导致图片变得模糊。所以需要提供一个工具&#xff0c;这就变得很重要了。我这里提供java代码&#xff0c;可以进行图片大小调整&#xff0c;至于调多少&#xff0c;你说了算…

震惊!这样制作宣传册,效果竟然如此惊人!

在当今社会&#xff0c;宣传册作为一种重要的宣传手段&#xff0c;其制作质量直接影响到宣传效果。而令人震惊的是&#xff0c;现在有些制作宣传册的方法&#xff0c;其效果竟然如此惊人&#xff01;今天&#xff0c;教大家如何制作宣传册吧&#xff01; 首先&#xff0c;我们要…

群晖NAS部署VoceChat私人聊天系统并一键发布公网分享好友访问

文章目录 前言1. 拉取Vocechat2. 运行Vocechat3. 本地局域网访问4. 群晖安装Cpolar5. 配置公网地址6. 公网访问小结 7. 固定公网地址 前言 本文主要介绍如何在本地群晖NAS搭建一个自己的聊天服务Vocechat&#xff0c;并结合内网穿透工具实现使用任意浏览器远程访问进行智能聊天…

数据挖掘常见算法(关联)

Apriori算法 Apriori算法基于频繁项集性质的先验知识&#xff0c;使用由下至上逐层搜索的迭代方法&#xff0c;即从频繁1项集开始&#xff0c;采用频繁k项集搜索频繁k1项集&#xff0c;直到不能找到包含更多项的频繁项集为止。 Apriori算法由以下步骤组成&#xff0c;其中的核…

“硝烟下的量子”:以色列为何坚持让量子计算中心落地?

自2023年10月7日新一轮巴以冲突爆发以来&#xff0c;支持巴勒斯坦伊斯兰抵抗运动&#xff08;哈马斯&#xff09;的黎巴嫩真主党不时自黎巴嫩南部向以色列北部发动袭击&#xff0c;以军则用空袭和炮击黎南部目标进行报复&#xff0c;双方在以黎边境的冲突持续至今。 冲突走向扑…

AI风险管理新利器:SAIF CHECK利用Meta Llama 3保障合规与安全

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

ONLYOFFICE 文档 8.1 现已发布:功能全面的 PDF 编辑器、幻灯片版式、优化电子表格的协作等等

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 一、引言二、ONLYOFFICE简介1. 文档编辑器2. 电子表格编辑器3. 演示文稿编辑器4. 项目管理5. 邮件和日历6. 客户关系管理&#xff08;CRM&#xff09;7. 安全性和权限管理8. 多平台和第三方集成 三、安装1. Windows/Mac 安装…

以AI之盾防AI之矛,效果其实非常棒!

以ChatGPT与Sora为代表的AIGC技术&#xff0c;正在以令人惊叹的自动化、智能化能力席卷文字创作、软件开发、影视后期等领域。打工人的“技能树”上若缺少了AI方向的技能&#xff0c;都可能会让自己在AI时代的竞争力大幅降低。那么不妨猜猜看&#xff0c;一向会第一时间利用各类…

论坛实现随机发帖的学习

1、badboy操作&#xff0c;录制发帖全过程&#xff0c;录制结果保存&#xff0c;生成为.jmx格式的文件 2、在Jmeter中打开该.jmx文件&#xff0c;重命名&#xff0c;便于了解步骤 3、生成结果树&#xff0c;查看所以步骤是否正确 4、实现随机发帖 断言&#xff1a;具有唯一表…

Apple - Game Center Programming Guide

本文翻译整理自&#xff1a;Game Center Programming Guide&#xff08; Updated: 2016-06-13 https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/GameKit_Guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008304 文章…

React尚硅谷115-126(setState、Hooks、Fragment、context、组件优化、renderprops

122&#xff0c;context 只能用value传&#xff0c;可以传对象&#xff0c;字符串 一种组件间通信方式, 常用于【祖组件】与【后代组件】间通信 使用&#xff1a; 创建Context容器对象&#xff1a; const XxxContext React.createContext() 渲染子组时&#xff0c;外面包…

菜单树的三种实现形式(递归,for, 队列)

菜单树在软件开发中经常用于展示层级结构的数据&#xff0c;例如网站导航菜单或文件系统。在实际开发中&#xff0c;我们常常需要考虑不同的数据结构和算法来实现这种层级关系的展示。本文将介绍菜单树的三种常见实现方式&#xff1a;递归、for循环和队列&#xff0c;帮助读者更…

小红书商家采集软件 商家电话批量采集软件

下面是一个关于小红书商家爬虫的程序的示例&#xff1a; import requests from bs4 import BeautifulSoupdef get_seller_data():url https://www.xiaohongshu.com/sellersheaders {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like…