cookie & session & token

参考链接

cookie 和 session 的区别

Sessionid和Token的区别

cookie

  • 单个cookie 保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie

使用 cookie 的话,只需要在后端的 Auth 模块放个设置 header 的代码即可

  • 用户未登录的情况下,Auth 判断没有权限,设置个跳转到登录页(或者是其他逻辑,比如以访客身份浏览之类的)
  • 用户登录时:将账号和密码 POST 到 Auth 模块后,Auth 设置一个 header,设置 Cookie 及过期时间
  • 用户登录后,在 Cookie 的有效期内(设置了过期时间就是过期时间内,没设置就是浏览器关闭前),任何请求都会自动带上 cookie,完全不用人工干预(fetch 请求除外,需要额外指定配置)
  • 在用户自动带上 cookie 请求后,需要授权的请求一定会经过 Auth 模块,判断 cookie 是否有效(防止恶意无效的 cookie),若 cookie 无效,则设置 header 删除 cookie(可选步骤),并将用户重定向到登录页。若 cookie 有效,则设置 header,为 cookie 续期(cookie 内容都可以完全不变)

cookie 和 session 机制上的区别

存取方式

  • Cookie 只能保管ASCII字符串,若要存储略微复杂的信息,运用Cookie是比拟艰难的
  • 假如需求存取Unicode字符或者二进制数据,需求先进行编码,也不能直接存取Java对象
  • Session 能够存取任何类型的数据,包括而不限于String、Integer、List、Map等
  • Session中也能够直接保管JavaBean乃至任何Java类,对象等,能够把Session看做是一个Java容器类。

隐私策略

  • Cookie 存储在 客户端,客户端的一些程序可能会窥探、复制以至修正Cookie中的内容
  • cookie 不是很安全 :可以分析存放在本地的COOKIE并进行 COOKIE欺骗
  • 敏感的信息如账号密码等尽量不要写到Cookie中,可像Google、Baidu那样将Cookie信息加密,提交到服务器后再进行解密,保证Cookie中的信息只要本人能读得懂
  • Session 存储在 服务器端,不存在敏感信息泄露的风险

有效期

  • 只需要设置 Cookie的过期时间属性为一个很大的数字就 可以保证长期有效
  • 由于Session依赖于名为JSESSIONID的Cookie,而CookieJSESSIONID的过期时间默许为–1,只需关闭了浏览器该Session就会失效,因而 Session不能完成信息永世有效的效果,运用URL地址重写也不能完成
  • 而且假如设置Session的超时时间过长,服务器累计的Session就会越多,越容易招致内存溢出

服务器压力

  • Cookie保管在客户端,不占用服务器资源,假如并发用户十分多,Cookie是很好的选择
  • 关于Google、Baidu、Sina来说,Cookie或许是唯一的选择
  • Session是保管在服务器端的,每个用户都会产生一个Session
  • 当访问增多,会比较 占用服务器(性能考虑)

浏览器支持

  • Cookie 需要客户端浏览器支持,假如客户端禁用了Cookie,或者不支持Cookie,则会话跟踪会失效
  • 假如客户端浏览器不支持Cookie,需要运用 Session以及URL地址重写,否则Session会话跟踪还会失效
  • 假如客户端支持Cookie,则Cookie既能够设为本浏览器窗口以及子窗口内有效(把过期时间设为–1),也 能设为一切阅读器窗口内有效(把过期时间设为某个大于0的整数)
  • Session 只能在本阅读器窗口以及其子窗口内有效,假如两个浏览器窗口互不相干,它们将运用两个不同的Session。(IE8下不同窗口Session相干)

跨域支持上的不同

  • Cookie 支持跨域名访问,例如将domain属性设置为“.biaodianfu.com”,则以“.biaodianfu.com”为后缀的一切域名均能够访问该Cookie
  • 跨域名Cookie如今被普遍用在网络中,例如Google、Baidu、Sina等
  • Session 不支持跨域名访问,Session仅在他所在的域名内有效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值