Cookie与Session

简介

  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字段后返回给客户端;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • cookie cookie的起源 早期web刚开始出现复杂的应用程序时,产生了对于能够直接在客户端上存储用户信息能...
    zenggo阅读 9,331评论 1 52
  • 本文分别对Cookie与Session做一个介绍和总结,并分别对两个知识点进行对比分析,让大家对Cookie和Se...
    舍末逐本阅读 2,773评论 0 0
  • 1,基本概念 cookie机制采用的是在客户端保持状态的方案,当你在浏览网站的时候,cookie是一个文本信息,会...
    代码墨白阅读 1,058评论 0 0
  • 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Se...
    chinariver阅读 10,985评论 1 49
  • 奇迹 ~今天早上喜马拉雅的琪迹分享实在让我欣喜若狂,欣喜若狂,声音太好听,太好听,太好听,太棒啦,巨大奇迹,让我心...
    fc8c4755608d阅读 1,950评论 0 0

友情链接更多精彩内容