• 存储(cookie、localStorage、sessionStorage)


    cookie

    什么是cookie

    cookie实际上就是一些信息,这些信息以文件的形式存储在客户端计算机上。当用户访问了某个网站,可以通过cookie向访问者电脑上存储数据。

    cookie的作用

    在浏览器中进行数据的存储,用户名、密码(保存信息,并与服务器互动)

    cookie的特性

    1.必须运行在服务器的环境下(开启服务器)

    2.cookie的容量: 5kb

    3.cookie存储的数据类型: 字符串

    4.cookie存放以域名形式区分的:一个域名下存放的cookie的个数是有限制的,不同浏览器存放的个数不一样,cookie能存储的条目数为:50条。

    5.Cookie默认是临时存储的,当浏览器关闭时,自动销毁:如果想长时间存放一个cookie,同时需要设置一个过期时间。

    cookie的缺点

    1.cookie可能被禁用:当用户非常注重个人隐私保护时,他很可能禁用浏览器的cookie功能;

    2.cookie是与浏览器相关的:这意味着即使访问的是同一个页面,不同浏览器之间所保存的cookie也是不能互相访问的;

    3.cookie可能被删除:因为每个cookie都是硬盘上的一个文件,因此很有可能被用户删除;

    4.cookie安全性不够高:所有的cookie都是以纯文本的形式记录于文件中,因此如果要保存用户名密码等信息时,最好事先经过加密处理。

    创建与获取cookie
    //设置和读取cookie
    document.cookie = "username=value";//获取cookie文件的内容
    //事实上cookie文件中存放的就是一个字符串,而这个字符串包含了当前网站目录下的所有cookie的名字和值。因此,在获取指定的cookie时,还需要使用String对象中的方法才能获得需要的cookie值。
    //cookie的生存期
    document.cookie = "名称=值;expires="+ 时间;
    //(时间必须是一个字符串)
    ​
    var d= new Date();
    d.setHours(d.getHours() + (24 * 30)); //保存一个月
    document.cookie = "visited=yes; expires=" + d.toUTCString();

    Web Storage

    可以让 Web 页面在客户端浏览器中以键值对的形式在本地存储数据。 这些数据可以是临时的(浏览器一关就自动删除),或者是长期存在的(无论多少天之后打开网站,仍然可以访问这些数据)

    localStorage(window.localStorage)

    本地存储,用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

    API
    //在本地存储中以key键/值的方式存储数据
    localStorage.setItem(“keyname”,value);
    localStorage.keyname = value;
    localStorage['keyname'] = value;
    ​
    //获取本地存储的值
    localStorage.getItem(“keyname”)
    localStorage.keyname
    localStorage['keyname']
    ​
    //删除指定key本地存储的值
    localStorage.removeItem(“keyname”);
    //清空网站在本地保存的所有的数据
    localStorage.clear();

    sessionStorage(window.sessionStorage)

    会话存储,用于本地存储一个会话 (session)中的数据,这些数据当在关闭浏览器后数据也随之销毁。

    localStorage、sessionStorage与cookie的区别

    1.同源限制

    cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。

    //如果两个网页一级域名相同,只是次级域名不同,浏览器允许通过设置document.domain共享 Cookie。(这种方法只适用于 Cookie 和 iframe 窗口,LocalStorage 和 IndexedDB 无法通过这种方法)
    A:http://w1.example.com/a.html
    B:http://w2.example.com/b.html
    //那么只要设置相同的document.domain,两个网页就可以共享 Cookie。因为浏览器通过document.domain属性来检查是否同源。
    //A 和 B 两个网页都需要设置document.domain属性,才能达到同源的目的。因为设置document.domain的同时,会把端口重置为null
    // 两个网页都需要设置
    document.domain = 'example.com';
    //A网页:设置cookie
    document.cookie = "test1=hello";
    //B网页:读取到A网页的这个cookie
    var allCookie = document.cookie;

    通过window.postMessage,读写其他窗口的 LocalStorage 也成为了可能。

    2.存储大小

    cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

    3.有效期

    sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。

    4.作用域

    sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。

    5.事件通知机制

    Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。

    6.API

    Web Storage 的 api 接口使用更方便。

  • 相关阅读:
    CentOS 8配置Java环境
    记录一个免费的开源API接口管理工具
    WebAPI 查询lookup字段的属性
    Windows环境变量配置与读取
    The specified Active Directory user already exists as a Dynamics 365 user
    QueryExpression之GreaterEqual和LessEqual
    Dynamics CRM Plugin Use Config
    【转】Reports SPN/SSPI Problems
    【转】Report Server cannot load the TERADATA / SQLPDW extension
    iOS 自动布局
  • 原文地址:https://www.cnblogs.com/ananasfleisch/p/13437746.html
Copyright © 2020-2023  润新知