ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

cookie、session、token、webstorage

2022-07-18 14:03:44  阅读:155  来源: 互联网

标签:浏览器 Session sessionStorage token session cookie 数据


认证机制

1. session认证

浏览器第一次发送请求时,服务器自动生成了Session(用户会话所需的属性及配置信息),并且生成了Session ID来唯一标识这个Session,并将其通过响应发送到浏览器。浏览器第二次发送请求会将前一次服务器响应中的Session ID放在请求的Cookie中一并发送到服务器上,服务器从请求中提取出Session ID,并和保存的所有Session ID进行对比,找到这个用户所对应的Session,从而知道了用户的登录信息。当用户在应用程序的 Web页间跳转时,也就是一次会话期间,浏览器不关闭时,Session ID是一直不变的。Session ID除了可以保存在Cookie中外,还可以保存在URL中,作为请求的一个参数(如果客户端禁用Cookie,需要通过url重写加上Session ID)。

2. token认证

token是服务端验证用户身份信息之后发送给客户端的用于标识用户身份的数据(可以是随机数、加密后的用户名密码),token验证服务器端不需要存储用户会话所需的配置等数据。生成的token可以保存在cookie和LocalStorage中。

cookie是服务器发送给客户端的用于验证某一会话信息的数据,cookie中有很多字段。不同网站Cookie中字段是不一样的,是由服务器端设置的。Cookie中常放入session_id或者token用来验证会话的登录状态,所以cookie是载体。session_id保存在cookie中(除浏览器不支持cookie外),token还可以保存在LocalStorage,而CSRF通常是基于cookie的,

cookie和webstorage的区别

cookie是HTML4提供的本地存储,WebStorage是HTML5提供的本地存储,是对cookie存储机制的一个改善。WebStorage又分为两种:sessionStorage和localStorage。sessionStorage的生命周期是在仅在当前会话下有效,它引入了一个“浏览器窗口”的概念。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在,但是sessionStorage在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一个页面,sessionStorage也是不一样的。localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失,localStorage除非主动删除数据,否则数据永远不会消失。

区别:

  1. cookie的作用是与服务器进行交互,作为http规范的一部分而存在的,WebStorage的概念和cookie相似,区别是它是为了更大容量存储设计的,webStorage仅仅是为了在本地存储数据而生;
  2. 数据有效期不同,cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭,sessionStorage仅在当前浏览器窗口关闭前有效,localStorage始终有效,长期保存;
  3. 作用域不用,sessionStorage不在不同的浏览器窗口中共享,localStorage在所有同源窗口中都是共享的,cookie也是在所有同源窗口中都是共享的;

webstorage的优点

  1. 减少网络流量:一旦数据保存在本地之后,就可以避免再向服务器请求数据,因此减少不必要的数据请求,减少数据在浏览器和服务器间不必要的来回传递
  2. 快速显示数据:性能好,从本地读数据比通过网络从服务器上获得数据快得多,本地数据可以及时获得,再加上网页本身也可以有缓存,因此整个页面和数据都在本地的话,可以立即显示
  3. 临时存储:很多时候数据只需要在用户浏览一组页面期间使用,关闭窗口后数据就可以丢弃了,这种情况使用sessionStorage非常方便

参考:
https://blog.csdn.net/jiangnanqbey/article/details/81709322
https://blog.csdn.net/weixin_42614080/article/details/90706499
https://xie1997.blog.csdn.net/article/details/84977902

标签:浏览器,Session,sessionStorage,token,session,cookie,数据
来源: https://www.cnblogs.com/lchen-java/p/16490184.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有