cookie、session、token的区别

这篇具有很好参考价值的文章主要介绍了cookie、session、token的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

cookie、session、token的区别

HTTP无状态

当登录一个大部分网站的时候,第一次登录之后,之后的很长一段时间当我们再次访问网站的时候都不需要我们再次登录了,这个是怎么回事呢?

我们都知道http是无状态的,什么是无状态:关闭网页,再次访问服务器,服务器是不能知道是你在访问。所以就是靠接下来就是这下面的几种技术了。

cookie

cookie 存储在客户端: cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。

cookie的maxAge字段用来设置过期时间

如果给某个 cookie 设置了 httpOnly 属性,则无法通过 JS 脚本 读取到该 cookie 的信息,但还是能通过 Application 中手动修改 cookie,所以只是在一定程度上可以防止 XSS 攻击,不是绝对的安全

cookie 是不可跨域的: 每个 cookie 都会绑定单一的域名,无法在别的域名下获取使用,一级域名和二级域名之间是允许共享使用的靠的是 domain)

流程:

当我们发送一个请求给服务器,浏览器通过响应字段的set-cookie来设置cookie,浏览器然后就会把cookie保存起来,之后浏览器每个发送的请求都会带上cookie。说白了,cookie就是存储在浏览器上面的数据而已

session

session 是另一种记录服务器和客户端会话状态的机制

session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中

session 认证流程:

  • 用户第一次请求服务器的时候,服务器根据用户提交的相关信息,创建对应的 Session
  • 请求返回时将此 Session 的唯一标识信息 SessionID 返回给浏览器,通过set-cookie设置cookie
  • 浏览器接收到服务器返回的 SessionID 信息后,会将此信息存入到 Cookie 中,同时 Cookie 记录此 SessionID 属于哪个域名
  • 当用户第二次访问服务器的时候,请求会自动判断此域名下是否存在 Cookie 信息,如果存在自动将 Cookie 信息也发送给服务端,服务端会从 Cookie 中获取 SessionID,再根据 SessionID 查找对应的 Session 信息,如果没有找到说明用户没有登录或者登录失效,如果找到 Session 证明用户已经登录可执行后面操作。

过程:

客户端发送一个请求给服务器,服务器然后就会在服务器创建一个session对象,对象里面一般会有sessionid和过期时间,然后通过set-cookie返回给浏览器,然后浏览器之后的每次请求都会自动带上这个给服务器了

Cookie 和 Session 的区别

  • 安全性: Session 比 Cookie 安全,Session 是存储在服务器端的,Cookie 是存储在客户端的。
  • 存取值的类型不同:Cookie 只支持存字符串数据,想要设置其他类型的数据,需要将其转换成字符串,Session 可以存任意数据类型。
  • 有效期不同: Cookie 可设置为长时间保持,比如我们经常使用的默认登录功能,Session 一般失效时间较短,客户端关闭(默认情况下)或者 Session 超时都会失效。
  • 存储大小不同: 单个 Cookie 保存的数据不能超过 4K,Session 可存储数据远高于 Cookie,但是当访问量过多,会占用过多的服务器资源。

token

用户发送一个请求,然后服务器就会生成一个token,然后把token返回给浏览器,然后浏览器就把token存储起来,之后请求需要权限的接口就可以把token发送给服务器验证了

特点:

  • 服务端无状态化、可扩展性好
  • 支持移动端设备
  • 安全
  • 支持跨程序调用

客户端使用用户名跟密码请求登录

服务端收到请求,去验证用户名与密码

验证成功后,服务端会签发一个 token 并把这个 token 发送给客户端

客户端收到 token 以后,会把它存储起来,比如放在 cookie 里或者 localStorage 里

客户端每次向服务端请求资源的时候需要带着服务端签发的 token

服务端收到请求,然后去验证客户端请求里面带着的 token ,如果验证成功,就向客户端返回请求的数据

每一次请求都需要携带 token,需要把 token 放到 HTTP 的 Header 里

基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析 token 的计算时间换取 session 的存储空间,从而减轻服务器的压力,减少频繁的查询数据库

token 完全由应用管理,所以它可以避开同源策略文章来源地址https://www.toymoban.com/news/detail-478270.html

到了这里,关于cookie、session、token的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【软件测试】cookie、session和token的区别

    今天就来说说session、cookie、token这三者之间的关系!最近这仨玩意搞得头有点大 我们都知道 HTTP 协议是无状态的,所谓的无状态就是客户端每次想要与服务端通信,都必须重新与服务端链接,意味着请求一次客户端和服务端就连接一次,下一次请求与上一次请求是没有关系的

    2024年02月10日
    浏览(38)
  • Cookie、Session和Token三者区别以及各自应用场景

    存储位置:Session和Cookie分别存储在服务器端和客户端,而Token则是在客户端和服务器端之间传递的。 安全性:Session相对于Cookie来说更安全,因为Session存储在服务器端,不容易被恶意攻击者获取。而Cookie存储在客户端,存在被拦截或篡改的风险。Token则通常用于安全认证和授

    2024年02月09日
    浏览(46)
  • HTTP请求中token、cookie、session有什么区别

     cookie HTTP 无状态的,每次请求都要携带 cookie ,以帮助识别身份 服务端也可以向客户端 set-cookie , cookie 大小 4kb 默认有跨域限制:不可跨域共享,不可跨域传递 cookie (可通过设置 withCredential 跨域传递 cookie ) cookie本地存储 HTML5 之前 cookie 常被用于本地存储 HTML5 之后推荐使用

    2024年02月08日
    浏览(46)
  • http 请求报文响应报文的格式以及Token cookie session 区别

    HTTP 请求报文和响应报文的格式如下: HTTP 请求报文格式: 方法 : 请求方法,例如 GET、POST、PUT、DELETE 等。 路径 : 请求的路径,表示需要访问的资源。 协议版本 : 使用的协议版本,通常是 HTTP/1.1 或 HTTP/2。 请求头部字段:包含了关于请求的附加信息,每个字段由字段名和对

    2024年02月16日
    浏览(54)
  • 【前端知识】Cookie, Session,Token和JWT的发展及区别(一)

    五一假期第3天,2023年5月1日继续打卡分享自己的前端笔记😜,今天就分享我关于Cookie, Session,Token和JWT的相关笔记和理解吧。 本文为原创,未经同意请勿转载 由于篇幅有点长😂,所以笔者将我关于这部分的笔记分为四个篇章(文章开头后面附录上下篇链接),避免读者的阅

    2024年02月06日
    浏览(42)
  • 【前端知识】Cookie, Session,Token和JWT的发展及区别(上)

    五一假期第3天,2023年5月1日继续打卡分享自己的前端笔记😜,今天就分享我关于Cookie, Session,Token和JWT的相关笔记和理解吧。 本文为原创,未经同意请勿转载 由于篇幅有点长😂,所以笔者将我关于这部分的笔记分为四个篇章(文章开头后面附录上下篇链接),避免读者的阅

    2024年02月02日
    浏览(40)
  • cookie+session和token

    总结说在前面: session:起源于服务端,保存在服务端(服务器或者数据库),通过cookie传递给用户,用户每一次发送HTTP请求的时候,通过验证cookie中的session-id来验证用户身份。 jwt(json web token):起源于服务端,保存在浏览器(cookie或者storage),和session一样,用户每一次发

    2024年02月19日
    浏览(43)
  • cookie,session和token详解

    目前网络上进行用户验证的方法主要有三种:cookie,session,token,他们之间存在相似也有各自的优缺点,本文将着重强调。 cookie是浏览器存储在本地的文件,主要用于存储服务器对用户进行的标记,大小有限一般只为4kb,用户在第一次进行服务器请求时,服务器会生成对应的

    2024年02月13日
    浏览(39)
  • 九、会话控制——cookie、session、token

    HTTP是一种无状态协议,它没有办法区分多次的请求是否来自于同一个客户端,无法区分用户。而产品中又大量存在这样的需求,所以我们需要通过会话控制来解决问题。 常见的会话控制有三种: (1)cookie (2)session (3)token cookie 是HTTP服务器发送到用户浏览器并保存在本

    2024年02月11日
    浏览(43)
  • cookie、session与token之间的关系

    Cookie、Session和Token机制在Web应用中主要用于 验证用户的身份信息 。通过这些机制,服务器能够确定请求是否来自已经登录的合法用户,并根据用户的身份进行相应的操作和授权。 具体来说: - Cookie和Session: Cookie和Session通常是结合使用的, 在用户成功登录后,服务器会创建

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包