• session和cookie和token


    session:

            session机制是一种服务端机制,服务器使用一种类似散列表的结构来保存信息。当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端里的请求是否已包含了一个session标识-sessionId,如果已包含一个sessionId,则说明已经为此客户端创建过session,服务器就按照sessionId把session检索出来使用。如果客户端请求不包含sessionId,则为此客户端创建 一个session并且声明一个与此session相关联的sessionId,sessionId是一个既不会重复,又不会被找到规律被仿造的字符串(服务器会自动创建)这个sessionId会在本次响应中返回给客户端保存。

    cookie:

            cookie实际上是一小段的文本信息,cookie是由服务器产生的。当浏览器第一次访问服务端时,服务器此时不知道访问者的身份,会创建一个独特的身份标识数据,格式为key-value,放到set-cookie字段里,随着响应报文发送给浏览器。浏览器看到有set-cookie字段以后就知道这是服务器给的身份标识,保存起来,下次请求会将此key=value放入到cookie中发送给服务端。服务端收到请求后发现cookie中有值,就能根据此值识别用户身份。

    token:

            在服务端经过base64URL编码后传给在客户端,每次客户请求的时候都会带上这一段信息,因此服务端拿到此段信息解密后就知道此用户是谁了,这个方法叫做JWT(JSON Web Token)。token类似一个令牌,无状态的。服务端所需的信息被base64编码后放到token中,服务器可以直接编码出其中的数据。

    session和cookie的区别

    1.         session数据放在服务器上,cookie数据放在客户的浏览器上。
    2.         考虑安全应该使用session,cookie不是很安全,可以使用本地的cookie进行欺骗。
    3.         session会在一定时间内保存在服务器上。当访问曾多,会比较占用服务器的性能。考虑性能应该使用cookie。
    4.         单个cookie只能保存4k数据,很多浏览器限制一个站点最多保存20个cookie,session可以存储任意类型的java对象,而cookie只能存储string类型对象。

    session和token的区别

    1.         token支持跨域访问,而session不支持。
    2.         无状态化, 服务端无需存储token ,只需要验证token信息是否正确即可,而session需要在服务端存储,一般是通过cookie中的sessionID在服务端查找对应的session。
    3.         token更适用于移动端 (Android,iOS,小程序等等)。
    4.         token可以避免CSRF跨站伪造攻击 ,还是因为不依赖cookie。
    5.         token可以通过URL,POST参数或者是在HTTP头参数发送,因为数据量小,传输速度也很快。
    6.         token由于字符串包含了用户所需要的信息,避免了多次查询数据库,因为Token是以JSON的形式保存在客户端的,所以JWT是跨语言的,不需要在服务端保存会话信息,特别适用于分布式微服务。

            

            

            

            

  • 相关阅读:
    遇到Bug漏测,不能总想着甩锅吧
    手搭手Mybatis-Plus数据迁移至TDSQL
    在线客服系统源码开发实战总结:需求分析及前端代码基本技术方案
    第四章 排序 6 AcWing 1538. 链表排序
    idea热部署-修改代码不重启
    二维码智慧门牌管理系统升级解决方案:要素类型
    揭秘APP中断测试:确保应用无懈可击的必备之战
    C++ 命名空间-----namespace(超详细解析,小白必看系列)
    Flinkv1.13实现金融反诈骗案例
    Rust的Linfa和Polars库进行机器学习
  • 原文地址:https://blog.csdn.net/Myuanforever/article/details/125484690