返回顶部
首页 > 资讯 > 精选 >Web数据存储中如何浅析Cookie、UserData、SessionStorage、WebSqlDatabase
  • 183
分享到

Web数据存储中如何浅析Cookie、UserData、SessionStorage、WebSqlDatabase

2023-06-08 06:06:57 183人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关WEB数据存储中如何浅析Cookie、UserData、SessionStorage、WebsqlDatabase ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

这篇文章将为大家详细讲解有关WEB数据存储中如何浅析Cookie、UserData、SessionStorage、WebsqlDatabase ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Cookie

它是标准的客户端浏览器状态保存方式,可能在浏览器诞生不久就有Cookie了,为什么需要Cookie 这个东东?由于Http协议没有状态,所以需要一个标志/存储来记录客户浏览器当前的状态,保证客户浏览器和服务器通讯时可以知道客户浏览器当前的状态。Cookie就是记录这个状态的容器,Cookie在每次请求的时候都被带回到服务器,从而保证了Server可以知道浏览器当前的状态,由于Cookie会被带回到Server,所以Cookie的内容不能存太多,最多不能超过4K,4K 限制的介绍 http://ec.europa.eu/ipg/standards/cookies/index_en.htm
其中一段内容为:

A browser is only required to store up to 300 cookies overall and maintain only the last 20 from each domain. The maximum size of a cookie is 4K of disk space.

但是在一些场景下可能需要存储超过4K或者更多的数据,但是这些数据不用在每次请求的时候被带回到服务器,只要能在客户的浏览器上保存住,并且可以方便的被javascript读写就可以了,这种需求尤为在中大型RIA的应用场景下更加的迫切,部分数据放在客户浏览器,节约带宽,提高浏览速度。HTML5标准已经替我们想到了满足这种需求的方案:sessionStorage , webSqlDatabase, 微软的IE 有 userData 方案。


userData
微软对USERDATA的介绍: http://msdn2.microsoft.com/en-us/library/ms531424(VS.85).aspx
其中一段内容为:

Security Alert:For security reasons, a UserData store is available only in the same directory and with the same protocol used to persist the store.
Security Alert:Using this behavior incorrectly can compromise the security of your application. Data in a UserData store is not encrypted and therefore not secure. Any application that has access to the drive where UserData is saved has access to the data. Therefore, it is recommended that you not persist sensitive data like credit card numbers. For more infORMation, see Security Considerations: Dhtml and Default Behaviors.
……
The userData behavior persists data across sessions, using one UserData store for each object. The UserData store is persisted in the cache using the save and load methods. Once the UserData store has been saved, it can be reloaded even if Microsoft Internet Explorer has been closed and reopened.
Setting the userData behavior class on the html, head, title, or style object causes an error when the save or load method is called.

userData可以在同目录同协议下相互访问,长期存储在客户机器上。最大存储空间也增大了很多。userData需要绑定到一个Dom元素上使用。在userData的method中有removeAttribute方法。经过测试代码发现removeAttribute方法好像不是很管用,需要使用像cookie过期的方式,才可以彻底的删除一个userData Attribute。
在 http://www.itwen.com/04web/11skill/skill20060918/60588.html 中介绍说userData存储在X:\Documents and Settings\当前用户\UserData\ 目录下。具体细节MS在userData说明文档中没有具体说明。


sessionStorage
HTML5 标准对 sessionStorage的介绍: http://www.whatwg.org/specs/web-apps/current-work/
其中对 sessionStorage 的介绍:

This specification introduces two related mechanisms, similar to HTTP session cookies [RFC2965], for storing structured data on the client side.
The first is designed for scenariOS where the user is carrying out a single transaction, but could be carrying out multiple transactions in different windows at the same time.
Cookies dont really handle this case well. For example, a user could be buying plane tickets in two different windows, using the same site. If the site used cookies to keep track of which ticket the user was buying, then as the user clicked from page to page in both windows, the ticket currently being purchased would "leak" from one window to the other, potentially causing the user to buy two tickets for the same flight without really noticing.
To address this, this specification introduces the sessionStorage DOM attribute. Sites can add data to the session storage, and it will be accessible to any page from that origin opened in that window.

Html5 sessionStorage Demo: http://html5demos.com/storage
下面是根据 http://www.blogjava.net/emu/arcHive/2006/10/04/73385.html 中提到的IE FF 兼容userData的测试代码:

代码如下:


function isIE() {
return !!document.all;
}
function initUserData() {
if (isIE()) document.documentElement.addBehavior("#default#userdata");
}
function saveUserData(key, value) {
var ex;
if (isIE()) {
//IE
with (document.documentElement) try {
load(key);
setAttribute("value", value);
save(key);
return getAttribute("value");
} catch (ex) {
alert(ex.message)
}
} else if (window.sessionStorage) {
//FF 2.0+
try {
sessionStorage.setItem(key, value)
} catch (ex) {
alert(ex);
}
} else {
alert("Error occured in user data saving. your browser do not support user data.");
}
}
function loadUserData(key) {
var ex;
if (isIE()) {
//IE
with (document.documentElement) try {
load(key);
return getAttribute("value");
} catch (ex) {
alert(ex.message); return null;
}
} else if (window.sessionStorage) {
//FF 2.0+
try {
return sessionStorage.getItem(key)
} catch (ex) {
alert(ex)
}
} else {
alert("Error occured in user data loading. your browser do not support user data.")
}
}
function deleteUserData(key) {
var ex;
if (isIE()) {
//IE
with (document.documentElement) try {
load(key);
expires = new Date(315532799000).toUTCString();
save(key);
}
catch (ex) {
alert(ex.message);
}
} else if (window.sessionStorage) {
//FF 2.0+
try {
sessionStorage.removeItem(key)
} catch (ex) {
alert(ex)
}
} else {
alert("Error occured in user data deleting. your browser do not support user data.")
}
}


userData和sessionStorage共同的特点就是:这两个对象都可以存储比cookie大的多的多内容。并且不会随每次请求带回到服务器端。但是根据Html5标准和测试发现userData和sessionStorage有很多地方是不同的。

下面是一个测试页面:
Web数据存储中如何浅析Cookie、UserData、SessionStorage、WebSqlDatabase 

其中的 SetInsurance link 会操作javascript 在IE下用userData写数据, 在FF下用sessionStore写数据。在IE下的情况是:关闭IE或者重启机器写入的值都不会丢失。在FF下的情况很有意思:在本页面写入的值在本页面可以访问,在由本页面所打开的其它页面可以访问。但是就算本页面开着,在导航栏里输入地址,打开本页面,存入的值就不能访问了。在本页面存入的值,在它的父页面(打开这个页面的页面)是访问不到的。又看了看Html5标准。sessionStorage 的全名是:Client-side session and persistent storage of name/value pairs 意思估计是存储在Client的内容是有session 会话的,存储的值由session会话所维系,一旦session会话中断或者丢失,存入的值也就随之消失了。所以当页面没有session(父页面,由地址栏打开的页面),是取不到值的。当FF关闭或者重启机器必然也就取不到值了。


webSqlDatabase
webSqlDatabase在HTML5 标准中是非常Cool的一个东东, 用Javascript写SQL查询,数据库就在浏览器里,这在以前几乎不敢想象。不过今天Safari, Chrome, Opera 都已经支持了,两个webSqlDatabase 的 Demo 页面: http://html5demos.com/database http://html5demos.com/database-rollback
W3C 对WEBSQLDATABASE 的介绍页面: http://dev.w3.org/html5/webdatabase/
WiKi上一个简明的说明: http://en.wikipedia.org/wiki/Web_SQL_Database

From W3C: "...an api for storing data in databases that can be queried using a variant of SQL"
Web SQL Database is supported by Google Chrome[1], Opera and Safari but will not be implemented by Mozilla(Firefox)[2] who instead propone Indexed Database API access.

不知道 HTML 5 的 SQLDB 会被浏览器支持的怎么样, 不过sessionStorage看上去已经可以基本满足需求了。

关于Web数据存储中如何浅析Cookie、UserData、SessionStorage、WebSqlDatabase 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: Web数据存储中如何浅析Cookie、UserData、SessionStorage、WebSqlDatabase

本文链接: https://lsjlt.com/news/252336.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Web数据存储中如何浅析Cookie、UserData、SessionStorage、WebSqlDatabase
    这篇文章将为大家详细讲解有关Web数据存储中如何浅析Cookie、UserData、SessionStorage、WebSqlDatabase ,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。...
    99+
    2023-06-08
  • vue如何使用cookie、localStorage和sessionStorage进行储存数据
    目录一、cookie的使用 1. 首先加载模块2. 在使用cookie的页面上进行引入3. 使用方法二、localStorage的使用1. 储存2. 获取3. 删除4. l...
    99+
    2022-11-13
    vue使用cookie vue使用localStorage vue使用sessionStorage vue储存数据
  • 数据存储中cookie sessionstorage localstorage的区别有哪些
    这篇文章主要介绍数据存储中cookie sessionstorage localstorage的区别有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、通常我们在存储数据的方式有三种cookie sessions...
    99+
    2023-06-09
  • C++浅析数据在内存中如何存储
    目录一、数据类型二、原码反码补码三、大小端整型提升一、数据类型 数据类型有7种:    char         ...
    99+
    2022-11-13
    C++数据存储 C++数据在内存中存储
  • 如何使用HTML5 Web存储的localStorage和sessionStorage方式进行Web页面数据本地存储
    这篇文章主要介绍了如何使用HTML5 Web存储的localStorage和sessionStorage方式进行Web页面数据本地存储,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大...
    99+
    2024-04-02
  • PHP中如何进行大数据存储和分析?
    PHP是一门广泛应用于Web开发领域的编程语言,其开放源代码的特性和易于学习使用的优点,使得PHP具有被广泛使用的特点。随着互联网的快速发展,数据的增长和存储已经成为了一个越来越大的难题。在这背景下,PHP开发者需要掌握大数据存储和分析的技...
    99+
    2023-05-21
    数据分析 PHP 大数据存储
  • 如何分析C语言数据的存储
    如何分析C语言数据的存储,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据类型的介绍数据类型存在的意义为变量开辟的空间大小(大小决定了使用范围)取数据的时候按照...
    99+
    2023-06-22
  • PostgreSQL中的时间序列数据如何存储和分析
    在PostgreSQL中,时间序列数据可以使用timestamp或timestamptz数据类型来存储。timestamp类型存储日...
    99+
    2024-04-02
  • C语言中数据在内存如何存储
    目录数据类型类型的基本归类整形有符号数和无符号数是否char 等于signed char呢?浮点型构造类型(自定义类型)指针类型空类型整形在内存中的存储原码,反码,补码正整数负整数大...
    99+
    2024-04-02
  • 如何在java中存储表格数据
    如何在java中存储表格数据?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、二维数组实现表格数据的存储import java.util.Arrays;public&...
    99+
    2023-06-14
  • 如何在PHP中使用数据存储函数
    数据存储函数在PHP中扮演着极为重要的角色。PHP中有多种数据存储函数,包括文件操作函数、数据库操作函数等等。本篇文章将重点探讨如何在PHP中使用数据存储函数。一、文件操作函数fopen()函数:打开文件并返回文件指针。语法如下:resou...
    99+
    2023-05-18
    函数 PHP 数据存储
  • 如何将python中的数据存储到mysql中
    目录 一、最基本的准备 1.1 本地安装mysql,推荐安装以下其中之一  1.2 安装python软件 二、建立连接 1.1打开PyCharm编程软件  1.2 打开mysql软件,否则连接不上  1.3 在python环...
    99+
    2023-09-07
    mysql 数据库
  • GO语言中的UNIX存储函数:如何优化数据存储过程?
    在开发应用程序时,我们经常需要使用数据存储过程。而在GO语言中,UNIX存储函数是一种非常常见的数据存储方式。UNIX存储函数可以在GO语言中使用,可以大大提高数据存储的效率。本文将介绍UNIX存储函数的使用方法,以及如何优化数据存储过程...
    99+
    2023-07-23
    unix 存储 函数
  • 如何在 PHP 中存储 NumPy 数据类型?
    在 PHP 中存储 NumPy 数据类型是一个常见的需求,因为 NumPy 提供了很多高效的数学运算和数据处理功能,而 PHP 是一种常用的服务器端编程语言,它可以方便地与 Web 应用程序集成。在本文中,我们将介绍如何在 PHP 中存储 ...
    99+
    2023-10-02
    数据类型 存储 numpy
  • 如何在Python和Laravel中存储API数据?
    随着互联网和移动应用的普及,API(Application Programming Interface)已经成为了数据交换的重要方式。然而,如何高效地存储API数据成为了一个值得思考的问题。本文将介绍如何在Python和Laravel中存储...
    99+
    2023-08-27
    laravel api 存储
  • PHP中如何高效存储NumPy的数据?
    NumPy是Python中非常流行的科学计算库,它提供了高效的数组操作、线性代数、傅里叶变换等功能。然而,在处理大规模数据时,NumPy的性能会受到限制。这时,我们可以考虑将NumPy数组保存到硬盘中,以避免频繁的内存分配和释放。本文将介...
    99+
    2023-10-16
    存储 numy numpy
  • 如何在Android中使用SQLite存储数据
    这篇文章给大家介绍如何在Android中使用SQLite存储数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。 安装一个SQLiteDeveloper,这个用来打开android生成的数据库。软件随便搜索就能找到,后面...
    99+
    2023-05-30
    android sqlite
  • SharedPreferences如何在android中实现数据存储
    本篇文章为大家展示了SharedPreferences如何在android中实现数据存储,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android平台给我们提供了一个SharedPreferenc...
    99+
    2023-05-31
    sharedpreferences android roi
  • 如何在 ASP 中存储 numy 数据类型?
    ASP 是一种流行的服务器端脚本语言,它的运行环境是 Microsoft Windows。在 ASP 中,我们可以使用多种数据类型来存储数据,包括数字、字符串、布尔值和日期等。但是,如果我们需要在 ASP 中存储 numy 数据类型,该怎么...
    99+
    2023-08-03
    存储 numy 数据类型
  • C语言中数据是如何存储在内存中的
    目录前言‍数据类型介绍‍整形数据在内存中存储‍浮点型数据在内存存储前言 在计算机内存中,数据的存储方式都是以0和1的形式存储,也就是二进制的形式,数据是如何向...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作