美文网首页
Cookie与Session

Cookie与Session

作者: 励志摆脱懒癌的少女酱 | 来源:发表于2018-07-20 10:47 被阅读83次

简介

  1. cookie机制
      在客户端保持状态的方案,浏览器通过扩展http协议自动发送给服务器:浏览器会检查所有存储的cookie,若某个cookie的作用范围>=将要请求的资源所在的位置,则将该cookie附在http请求头上发送给服务器。
    (1)会话cookie:保存在内存,生命周期是浏览器会话期间;
    (2)持久cookie:保存在硬盘,生命周期是设置的过期时间expires;
    浏览器筛选cookie规则:按照与当前请求url的域名或父域名下+当前路径或父路径下筛选—通过document.cookie返回与当前请求url可用的所有字符串;

    Cookie图解
  2. session机制
      在服务端保持状态的方案,需要借助cookie机制在客户端保存一个标识(sessionID);当程序为某个客户端请求创建一个session时,服务器首先检查这个客户端请求是否已包含了一个session id,若有,则按id检索出来使用;若没有,服务器会为客户端创建一个session并生成一个session id返回给客户端,客户端借助cookie保存;

区别

  1. 存储的位置
  • cookie存于客户端,临时文件夹中;
  • session存在服务器内存中,一个session域对象为一个用户浏览器服务;
  1. 安全性
  • cookie通过加密后存入客户端;
  • session本身存于服务器内存中,安全性好;
  1. 网络传输量
  • cookie会传递给服务器;
  • session本身在服务器,不存在传送流量;
  1. 生命周期(以20min为例)
  • cookie生命周期是累计的,从创建时开始计时,20min后cookie生命期结束过期;
  • session生命周期是间隔的,从创建时开始计时,20min内未访问则session被销毁,若在20min内访问,则重新计时;Session可以手动配置失效时间;
  • 关机会造成session生命期的结束,对cookie没影响;

cookie的生成与应用

  1. 服务器生成cookie:因为http是无状态的协议,用它记录服务器和客户端之间的状态—res.setHeader('Set-Cookie', ['k1=v1;[可选参数]', 'k2=v2;[可选参数]']):Set-Cookie: k1=v1; Set-Cookie: k2=v2;/ res.setHeader('Set-Cookie', 'k1=v1;[可选参数]');
  • path:cookie影响到的路径,当前访问的路径不满足该匹配,浏览器不发送这个cookie(同源策略);
    • Expires(何时过期)/Max-Age(多久过期):告知浏览器这个Cookie何时过期,若不设置,浏览器会丢弃这个cookie,若设置了过期时间,浏览器会将cookie内容写入磁盘中并保存;
    • HttpOnly:该cookie再document.cookie中不可见(js脚本无法读取cookie信息),浏览器不能通过document.cookie去更改这个cookie值,但是在http请求的过程中,依然会发送这个Cookie到服务器端,防止xss攻击
  1. 客户端:发送请求时http报文中携带:Cookie: key=value;key=value;
  2. 性能优化
  • 减小cookie的大小;
  • 为静态组件使用不同的域名:在域名的根节点设置cookie,子域名下的请求都会携带这些cookie,而静态文件不关心状态,不需要这些cookie信息,因此cookie对静态资源是无用的;
    (1)好处:
    • 减少无效cookie的传输;
    • 浏览器下载线程数翻倍(同一域名下请求最大连接数是5);
      (2)坏处
    • 多一个域名多一次CDN查询;
      4.cookie应用:广告投放和在线统计领域—通过嵌入第三方的广告和统计脚本,将cookie和当前页面绑定,标识用户,得到用户的浏览行为,就可以定向投放广告了。

每一个用户与服务器数据一一对应的实现

  1. 基于cookie保存sessionid实现;
  2. 基于url的查询字符+url重定向实现:服务器发现字符串不携带sessionid参数则回复一个302状态和Location报头,将url加上sessionid字段后返回给客户端;

相关文章

网友评论

      本文标题:Cookie与Session

      本文链接:https://www.haomeiwen.com/subject/mqyfmftx.html