cookie & session &localStorage

cookie

cookie用来存储web页面的用户信息,一般最大容量为4k。其作用就是解决“如何记录客户端的用户信息”,以键值对的形式存储在电脑上的文本文件中。当浏览器从服务器上请求web页面时,属于该页面的cookie也会被添加到请求当中。
使用document.cookie="键=值"的形式创建

  • expires为过期时间
  • maxAge 是 cookie 多久后过期的相对时间
    (不设置这两个选项时会产生 session cookie,session cookie 是 transient 的,当用户关闭浏览器时,就被清除。一般用来保存 session 的 session_id)
  • path为cookie路径,默认属于当前页面
  • secure:当 secure 值为 true 时,cookie 在 HTTP 中是无效,在 HTTPS 中才有效
  • 浏览器不允许脚本操作 document.cookie 去更改 cookie。一般情况下都应该设置这个为 true,这样可以避免被 xss 攻击拿到cookie

session

记录客户状态的机制,在一定时间内保存在服务器上,没有大小限制。session在实现的过程中需要使用到cookie。

实现过程
  • 在服务器端生成全局唯一标识符session_id;
  • 在服务器内存里开辟此session_id对应的数据存储空间;
  • 将session_id作为全局唯一标示符通过cookie发送给客户端;
  • 以后客户端再次访问服务器时会把session_id通过请求头中的cookie发送给服务器;
  • 服务器再通过session_id把此标识符在服务器端的数据取出
  • 如果客户端的浏览器禁用了 Cookie 怎么办?一般这种情况下,会使用一种叫做URL重写的技术来进行会话跟踪,即每次HTTP交互,URL后面都会被附加上

localStorage

用于将大量数据(最大5M)保存在浏览器中,保存后数据永远存在不会失效过期,除非用 js手动清除。一般用于性能优化,可以保存图片、js、css、html 模板、大量数据。localStorage键值对总是以字符串的形式存储。

你可能感兴趣的:(cookie & session &localStorage)