一篇文章让你分清token、cookie、session

108 阅读2分钟

🍔token cookie session

  • Cookie

    关于cookie的使用 ==> 首先浏览器向服务器发送HTTP请求 然后服务器会给浏览器发哦是那个一个Set-Cookie (key, value)

    说白了其实Cookie就是一种存储在服务器的数据罢了

    而且由于打开浏览器可以直接看到Cookie 导致这种存放数据的方式很不安全

  • Session

    • 关于session其实就是服务器一种保存数据的方式
    • 当用户将数据发送到服务器的时候 服务器会根据一系列的加密算法将数据变成一个 SessionID 这个SessionID 具有唯一性 只要有一点点改变 服务器就无法继续识别出这个SessionID
    • 当用户给服务器发送请求的时候 服务器返回的不仅仅是ID 还有一个会话结束时间 由于数据保存是有一定时效的 所以当时间到了 服务器会将之前的SessionID做销毁处理 也就是Cookie失效了 即下次用户登陆的时候就需要重新输入密码了
    但是由于SessionID这种储存方式可能导致服务器中的数据量太大 不同的服务器再分享的时候也会面临负载过大的问题 所以就出现了一种新的技术叫做 JWT(JSON Web Token)
  • Token

    (header. payload . signature)

    用户第一次登录的时候 服务器就会生成一个JWT 服务器自己不需要保存这个JWT只需要保存JWT签名的密文就好了 然后将JWT发送给浏览器 使浏览器以Cookie或者Storage的形式进行存储 当用户下次需要登陆的时候 只要把token发送给服务器就可以了 和Session类似 只是token是存在用户这边

  • 总结

    • token生成于服务端 存储在客户端 服务端不需要存储 用户后面每次登陆的时候都携带首次登陆生成的token字符串用于验证 避免了大量session对象存储带来的内存消耗 和个服务器之间session的赋值或者专门用来存储session的服务器带来的问题