zoukankan      html  css  js  c++  java
  • cookies,sessionStorage 和 localStorage 的区别

    请描述一下 cookies,sessionStorage 和 localStorage 的区别?

    • cookie 是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)
    • cookie 数据始终在同源的 http 请求中携带(即使不需要),记会在浏览器和服务器间来回传递。
    • sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存。
    • 存储大小:
      • cookie 数据大小不能超过 4k。
      • sessionStorage 和 localStorage 虽然也有存储大小的限制,但比 cookie 大得多,可以达到 5M 或更大。
    • 有效期(生命周期):
      • localStorage: 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
      • sessionStorage: 数据在当前浏览器窗口关闭后自动删除。
      • cookie: 设置的 cookie 过期时间之前一直有效,即使窗口或浏览器关闭
    • 共享
      • sessionStorage不能共享,localStorage在同源文档之间共享,cookie在同源且符合path规则的文档之间共享

    cookie,localStorage,sessionStorage,indexDB

    特性 cookie localStorage sessionStorage indexDB
    数据生命周期 一般由服务器生成,可以设置过期时间 除非被清理,否则一直存在 页面关闭就清理 除非被清理,否则一直存在
    数据存储大小 4K 5M 5M 无限
    与服务端通信 每次都会携带在 header 中,对于请求性能影响 不参与 不参与 不参与

    从上表可以看到,cookie 已经不建议用于存储。如果没有大量数据存储需求的话,可以使用 localStoragesessionStorage 。对于不怎么改变的数据尽量使用 localStorage 存储,否则可以用 sessionStorage 存储。

    对于 cookie,我们还需要注意安全性。

    属性 作用
    value 如果用于保存用户登录态,应该将该值加密,不能使用明文的用户标识
    http-only 不能通过 JS 访问 Cookie,减少 XSS 攻击
    secure 只能在协议为 HTTPS 的请求中携带
    same-site 规定浏览器不能在跨域请求中携带 Cookie,减少 CSRF 攻击
    今天你学习了吗!!!
  • 相关阅读:
    39 多线程(十一)——ThreadLocal
    38 多线程(十)——volatile 数据同步
    Linux内存描述之内存区域zone–Linux内存管理(三)
    Linux内存描述之内存节点node–Linux内存管理(二)
    Linux内存描述之概述--Linux内存管理(一)
    服务器体系(SMP, NUMA, MPP)与共享存储器架构(UMA和NUMA)
    乐观
    乱七八糟的学习资料汇总(python3.x,pyqt,svn,git)
    Linux学习资料网站汇总链接(持续更新ing)
    浅析十大常见排序(含C++代码)
  • 原文地址:https://www.cnblogs.com/nayek/p/11728744.html
Copyright © 2011-2022 走看看