小火柴的博客笔记 小火柴的博客笔记
首页
学过的习
踩过的坑
想过的事
首页
学过的习
踩过的坑
想过的事
  • 学过的习

    • CSS的样式优先级权重
    • 事件冒泡和事件捕获
    • js模块可以通过两种方式对外暴露函数
    • js中的内存泄漏和内存溢出
    • js作用域链
    • 控制台暴露vue
    • es5常用知识总结
    • es6常用知识总结
    • es7常用知识总结
    • js模块化
    • nodeJs学习
    • node搭建服务器
    • webPack学习
    • js原型对象和原型链的理解
    • css阻塞与js阻塞
    • ajax的学习
    • 浏览器的重绘与重排
    • 函数防抖与函数节流学习记录
    • 浏览器储存学习
      • 一、cookie
      • 二、SessionStorage和LocalStorage
      • 三、备注:
    • React起步
    • React的基本使用
    • React项目搭建
    • vue中attrs和listeners的使用
    • js的精度问题
    • React的状态管理
    • yarn和npm的对比
    • websocket的使用
  • 想过的事

  • 踩过的坑

  • 前端
  • 学过的习
小火柴
目录

浏览器储存学习

Cookie, SessionStorage, LocalStorage这三者都可以被用来在浏览器端存储数据,而且都是字符串类型的键值对。

# 一、cookie

概念: cookie是纯文本格式,不包含任何可执行的代码信息,伴随着用户请求在 Web 服务器和浏览器之间传递。cookie本质上属于http的范畴,因为http协议本身是无状态的,服务端是没有办法区分请求来自于哪个客户端,即便是来自于同一个客户端的多次请求 我们的服务端也是没有能力来区分的。就是因为http协议是无状态的,所以才需要cookie去维持客户端的状态。
生成方式:

  • 客户端生成: 在 JavaScript 中通过 document.cookie 属性,你可以创建、维护和删除 cookie设置 。 document.cookie 属性的值并不会删除存储在页面中的所有 cookie。它只简单的创建或修改字符串中指定的 cookie。 要使用 JavaScript 提取 cookie 的值,只需要从 document.cookie 中读取即可。
  • 服务端生成: Web 服务器通过发送一个称为 Set-Cookie 的 HTTP消息头来创建一个 cookie。注: HttpOnly, 为避免跨域脚本 (XSS) 攻击,通过JavaScript的 Document.cookie API无法访问有HttpOnly 标记的Cookie,

缺点:

  • 安全性 :由于cookie在HTTP中是明文传递的,其中包含的数据都可以被他人访问,可能会被篡改、盗用。
  • 大小限制: cookie的大小限制在4KB左右,若要做大量存储显然不是理想的选择。
  • 增加流量: cookie每次请求都会被自动添加到Request Header中,无形中增加了流量。cookie信息越大,对服务器请求的时间也越长。因此要慎用cookie,不要在cookie中存储重要和敏感的数据。



# 二、SessionStorage和LocalStorage

概念: SessionStorage和LocalStorage都是本地存储,同时空间比Cookie大很多,一般支持5-10M。 浏览器端通过 Window.sessionStorage 和 Window.localStorage 属性来实现本地存储机制。 LocalStorage和SessionStorage 基本没区别,唯一的区别在于localstoorage是永久存储在本地,但是sessionstoryage关闭浏览器就丢失


 //接受一个键名作为参数,返回键名对应的值。
 let data = sessionStorage.getItem('key');
 let data = localStorage.getItem('key');

 //接受一个键名和值作为参数,将会把键值对添加到存储中,
 //如果键名存在,则更新其对应的值。
 sessionStorage .setItem('key', 'value')
 localStorage .setItem('key', 'value')

 //接受一个键名作为参数,并把该键名从存储中删除。
 sessionStorage .removeItem('key');
 localStorage .removeItem('key');

 //清空存储中的所有键名
 sessionStorage .clear()
 localStorage .clear()



storage事件: Storage 对象发生变化时(创建/更新/删除数据项时,Storage.clear() 方法至多触发一次该事件)会触发。注:在同一个页面内发生的改变不会起作用。在相同域名下的其他页面发生的改变才会起作用。(修改的页面不会触发事件,与它共享的页面会触发事件)

  • key : 修改或删除的key值,如果调用clear(),为null
  • newValue : 新设置的值,如果调用clear(),为null
  • oldValue : 调用改变前的value值,如果调用clear(),为null
  • url : 触发该脚本变化的文档的url
  • storageArea : 当前的storage对象

# 三、备注:

  • 静态资源是不会携带cookie的
  • cookie一般都是后台种的,很少让前端来直接写
  • cookie分:持久级别、session级别
  • cookie一般用于和session通信
#JS
函数防抖与函数节流学习记录
React起步

← 函数防抖与函数节流学习记录 React起步→

Theme by Vdoing | Copyright © 2021-2023 X match
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式