关于cookie,session,sessionStorage,localStorage

关于cookie,session,sessionStorage,localStorage

有关于这些在web应用用到的存储一直有些不清楚,今天想自己去找找资料,理一理。

HTTP Cookie

HTTP Cookie是服务器响应客户端时发送的一小块数据(大小不大于4KB),服务器使用Set-Cookie响应头部向客户端传达Cookie信息。客户端接收到后存储起来,之后每次向该服务器请求时头部都会有Cookie信息,服务器通过Cookie来辨认浏览器的状态,这样在基于无状态的HTTP协议传输中记录了稳定的状态信息。

一般用于以下情况:

  • 会话状态管理:默认情况下Cookie在浏览器会话时存储,浏览器关闭后就被自动删除(如登录状态、购物车、游戏分数)
  • 个性化设置:设置有效期持久保存(如应用的主题、皮肤)
Set-Cookie:名称=值; Expires=Wed, 21 Oct 2015 07:28:00 GMT;
//或者Max-Age=3600s

//通过document.cookie访问当前网站的cookie,但为了预防 XSS 以及 CSXR,后台会在Set-Cookie里添加HttpOnly禁止使用Javascript访问Cookie,需要检查过滤出敏感操作,并且Cookie要设置的时效性要短。

Set-Cookie的一些值

  • 浏览器跟踪用户行为 (如记录用户浏览该系统的次数,用户浏览时间等)

session

session机制是一种服务端的机制,当被客户端请求创建session时,服务端会检查客户端请求中是否含有session_id,如果含有则去散列表匹配信息,若未找到匹配信息,则创建session对象,然后将session_id返回给客户端保存下来,在交互过程中客户端将session_id携带发送至服务端。这种机制用于识别客户端状态,在会话期间有效,浏览器关闭后被清除。(可以是cookie的一种,可以将session_id附加在url后面作为查询字符串/附加信息)

Web Storage

因为使用Cookie时每次请求头部都携带,这样造成了额外性能开销,尤其是在移动端。因此Cookie渐渐被淘汰,浏览器允许将数据存储到本地如Web Storage(大小大于5M左右)。

  • sessionStorage:通过Window.sessionStorage访问,是页面会话时临时存储的数据,当浏览器关闭后被自动删除。
  • localStorage:通过Window.localStorage访问,能够持久地保存在本地浏览器中,浏览器关闭后也不会被删除掉。

//两者都是Storage对象。

IndexedDB

IndexedDB是是浏览器分配给应用程序的事务型数据库,在客户端能够存储大量结构化数据(包括文件/blob),使用Javascript语言操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值