|
1
663
这是一个范围极广的问题,许多赞成/反对意见都与情况有关。 在所有情况下,这些存储机制都将特定于单个计算机/设备上的单个浏览器任何在会话间持续存储数据的需求都需要涉及到应用服务器端——很可能使用数据库,但可能是XML或文本/CSV文件。 localstorage、sessionstorage和cookies都是客户端存储解决方案。会话数据保存在您直接控制的服务器上。 本地存储和会话存储localstorage和sessionstorage是相对较新的api(也就是说,并不是所有的传统浏览器都支持它们),它们几乎完全相同(在api和功能上都是如此),唯一的例外是持久性。sessionStorage(顾名思义)仅在浏览器会话期间可用(并在关闭选项卡或窗口时被删除)-但是,它在页面重新加载后仍然有效(来源 DOM Storage guide - Mozilla Developer Network ). 显然,如果您正在存储的数据需要在持续的基础上可用,那么LoalStor相对于SeStestSt存储更可取——尽管您应该注意到这两个都可以被用户清除,因此在任何情况下都不应该依赖于数据的持续存在。 localstorage和sessionstorage非常适合在页面之间保存客户端脚本中所需的非敏感数据(例如:首选项、游戏中的分数)。本地存储和会话存储中存储的数据可以从客户端/浏览器中轻松读取或更改,因此不应依赖于在应用程序中存储敏感或安全相关的数据。 曲奇饼这对于cookie也是一样的,用户可以对cookie进行简单的修改,也可以用纯文本从cookie中读取数据——因此,如果您想存储敏感数据,那么会话实际上是您唯一的选择如果您不使用ssl,cookie信息也可以在传输过程中被拦截,特别是在开放的wifi上。 从积极的方面来说,cookies可以通过设置一个仅限http的标志(这意味着现代(支持的)浏览器将阻止javascript访问cookies和值(这也将阻止您自己的合法javascript访问它们),从而对跨站点脚本(xss)/脚本注入等安全风险提供一定程度的保护。这对于身份验证cookie尤其重要,它用于存储包含登录用户详细信息的令牌-如果您有该cookie的副本,则出于所有目的 成为 就web应用程序而言,该用户具有与用户相同的数据访问权限和功能。 由于cookie用于身份验证和用户数据的持久性, 全部的 页面有效的cookie将从浏览器发送到服务器 每一个 对同一域的请求-这包括原始页面请求、任何后续的Ajax请求、所有图像、样式表、脚本和字体因此,cookies不应用于存储大量信息。浏览器还可能对可以存储在cookies中的信息的大小施加限制。通常,cookies用于存储用于身份验证、会话和广告跟踪的标识令牌令牌本身通常不是人类可读的信息,而是链接到应用程序或数据库的加密标识符。 本地存储与会话存储与cookies在功能方面,cookies、sessionStorage和localStorage只允许存储字符串-在设置时可以隐式转换原始值(这些值在读取后需要转换回用作其类型),但不能转换对象或数组(可以使用JSON序列化它们以使用api存储它们)会话存储通常允许您存储服务器端语言/框架支持的任何原语或对象。 客户端与服务器端由于http是一种无状态协议-web应用程序在返回到web站点时无法从以前的访问中识别用户-会话数据通常依赖于cookie令牌来识别重复访问的用户(尽管很少url参数可用于相同目的)。数据通常有一个滑动的到期时间(每次用户访问时更新),并且根据您的服务器/框架,数据将存储在进程中(意味着如果Web服务器崩溃或重新启动,数据将丢失),或者存储在状态服务器或数据库的外部。在使用web服务器场(给定网站有多个服务器)时,这也是必需的。 由于会话数据完全由您的应用程序(服务器端)控制,因此它是任何敏感或安全的东西的最佳位置。 服务器端数据的明显缺点是可伸缩性—在会话期间,每个用户都需要服务器资源,并且必须随每个请求一起发送任何需要的客户端数据由于服务器无法知道用户是否导航到另一个站点或关闭浏览器,因此会话数据必须在给定时间后过期,以避免所有服务器资源被放弃的会话占用。因此,在使用会话数据时,应注意数据可能已过期或丢失,特别是在具有长表单的页面上。如果用户删除他们的cookie或切换浏览器/设备,它也将丢失。 一些web框架/开发人员使用隐藏的HTML输入将数据从表单的一个页面持久化到另一个页面,以避免会话过期。 localstorage、sessionstorage和cookies都受“同源”规则的约束,这意味着浏览器应该阻止对数据的访问,设置信息以开头的域除外。 有关客户端存储技术的更多信息,请参见 Dive Into Html 5 是的。 |
|
|
2
59
结帐 across-tabs -如何方便跨源浏览器选项卡之间的轻松通信。 |
|
3
42
|
|
|
4
23
这些是JavaScript中“window”对象的属性,就像document是包含DOM对象的window对象的属性一样。 session storage属性为每个给定的原点维护一个单独的存储区域,该区域在页面会话期间(即只要浏览器处于打开状态)可用,包括页面重新加载和还原。 本地存储也会执行同样的操作,但即使在关闭和重新打开浏览器时仍会继续。 您可以按如下方式设置和检索存储的数据:
类似于localstorage。 |
|
|
5
2
web存储api提供了一些机制,通过这些机制,浏览器可以以比使用cookies更直观的方式安全地存储密钥/值对。
这个
Web Storage API
扩展
存储对象很简单 键值 存储,类似于对象, 但它们在页面加载过程中保持完整 是的。
键和值总是字符串
是的。存储任何类型
Web存储中的两种机制如下:
这个 maximum storage available is different per browser 但是,大多数浏览器至少实现了W3C推荐的最大存储限制 5兆 是的。
总是捕获本地存储安全性和配额超出错误
StorageEvent 存储区域改变时,存储事件在文档的窗口对象上触发。当用户代理要发送文档的存储通知时,用户代理必须使用StorageEvent将任务排队以在文档对象的窗口对象处触发名为storage的事件。
侦听dom/window上的存储事件以捕获存储中的更改。 fiddle . 曲奇饼 (网络cookie、浏览器cookie) Cookie是数据,作为名称-值对存储在计算机上的小文本文件中。
使用Cook.Cookie属性也可以通过JavaScript创建新Cookie,如果没有设置HTTPOnLee标志,也可以从JavaScript访问现有Cookie。
cookies通常在web应用程序中用于标识用户及其经过身份验证的会话 当接收到HTTP请求时,服务器可以发送 Set-Cookie 标题和响应。Cookie通常由浏览器存储,然后在CookieHTTP头中,将Cookie连同向同一服务器发出的请求一起发送。
会话cookies 将在客户端关闭时被删除。它们不指定expires或max age指令。
永久饼干 在特定日期(过期)或特定时间长度(最长期限)后过期。
cookie http请求头包含服务器先前使用set cookie头发送的已存储http cookie。通过document.cookie属性、xmlhttprequest和request api来减轻对跨站点脚本(xss)的攻击,无法通过javascript访问仅限http的cookies。 cookies主要用于三个目的:
Cookies是为了解决“如何记住用户信息”的问题而发明的:
基督教徒 Example 作为总结,
|
|
|
6
2
本地存储: 它保存存储用户信息数据而不带过期日期当用户关闭浏览器窗口时,此数据不会被删除它将在天、周、月和年中可用。 在本地存储中可以存储5-10MB的脱机数据。
会话存储: 它与本地存储日期相同,只是当web用户关闭浏览器窗口时,它将删除所有窗口。 会话内存储最多可存储5 MB数据
会议 :会话是存储在服务器上的全局变量。每个会话都分配了一个唯一的id,用于检索存储的值。 曲奇饼 :Cookie是数据,作为名称-值对存储在计算机上的小文本文件中。一旦设置了cookie,随后的所有页面请求都将返回cookie名称和值。 |
|
7
1
本地存储 以下内容:
饼干:
会话存储:
|
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 8 月前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 8 月前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 8 月前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 8 月前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 9 月前 |