cookie 和session关系

cookie 和session关系

**cookie:**有时也用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)
基于 Internet的各种服务系统应运而生,建立商业站点或者功能比较完善的个人站点,常常需要记录访问者的一些信息
目前公认的是,通过 Cookie 和 Session 技术来实现记录访问者的一些基本信息
Token :也称作令牌。是在服务端产生的,如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。
解决在操作过程不能让用户感到 Token 失效这个问题,有一种方案是在服务器端保存 Token 状态,用户每次操作都会自动刷新(推迟) Token 的过期时间——Session 就是采用这种策略来保持用户登录状态的,
另一种方案,使用 Refresh Token,服务端不需要刷新 Token 的过期时间,一旦 Token 过期,就反馈给前端,前端使用 Refresh Token 申请一个全新 Token 继续使用
由uid+time+sign[+固定参数]组成:
uid: 用户唯一身份标识
time: 当前时间的时间戳
sign: 签名, 使用 hash/encrypt 压缩成定长的十六进制字符串,以防止第三方恶意拼接
固定参数(可选): 将一些常用的固定参数加入到 token 中是为了避免重复查库

session:基于 session 的用户认证借助于请求体对象 req 中的 session 数据来完成。
session在访问tomcat服务器HttpServletRequest的getSession(true)的时候创建,tomcat的ManagerBase类提供创建sessionid的方法:随机数+时间+jvmid

cookie 和session 的区别:

1、cookie数据存放在客户的浏览器上,session数据放在服务器上。

2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。

3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE。

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

5、所以个人建议:将登陆信息等重要信息存放为session,其他信息如果需要保留,可以放在cookie中

cookie 和session 的联系:

1、session是通过cookie来工作的。

2、session和cookie之间是通过$_COOKIE[‘PHPSESSID’]来联系的。

3、通过$_COOKIE[‘PHPSESSID’]可以知道session的id,从而获取到其他的信息。

session的工作原理:

1、当一个session第一次被启用时,一个唯一的标识被存储于本地的cookie中。

2、首先使用session_start()函数,PHP从session仓库中加载已经存储的session变量。

3、当执行PHP脚本时,通过使用session_register()函数注册session变量。

4、当PHP脚本执行结束时,未被销毁的session变量会被自动保存在本地一定路径下的session库中,这个路径可以通过php.ini文件中的session.save_path指定,下次浏览网页时可以加载使用。

cookies功能特点:

1、在同一个页面中设置 Cookie,实际上是按从后往前的顺序进行的。如果要先删除一个 Cookie,再写入一个 Cookie,则必须先写写入语句,再写删除语句,否则会出现错误 。

2、Cookie是面向路径的。缺省路径 (path) 属性时,Web 服务器页会自动传递当前路径给浏览器,指定路径强制服务器使用设置的路径。在一个目录页面里设置的 Cookie 在另一个目录的页面里是看不到的 。

3、Cookie 必须在 HTML 文件的内容输出之前设置;不同的浏览器 (Netscape Navigator、Internet Explorer) 对 Cookie 的处理不一致,使用时一定要考虑;

客户端用户如果设置禁止 Cookie,则 Cookie 不能建立。 并且在客户端,一个浏览器能创建的 Cookie 数量最多为 300 个,并且每个不能超过 4KB,每个 Web 站点能设置的 Cookie 总数不能超过 20 个。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
CookieCookies)和 Session(会话)是用于在客户端和服务器之间跟踪用户状态和数据的关键概念。它们之间有以下关系: - CookieCookie 是在客户端(通常是浏览器)上存储数据的小型文本文件。服务器通过响应的 Set-Cookie 头部将 Cookie 数据发送给客户端。一旦客户端接收到 Cookie,它会将其存储在本地,并在后续的请求中自动将 Cookie 附加到相应的请求头部中发送给服务器。Cookie 可以包含各种信息,包括会话标识符(session ID)、用户首选项、跟踪数据等。 - SessionSession 是一种在服务器端跟踪用户状态和数据的机制。服务器会为每个用户创建一个唯一的会话标识符(session ID),并将其存储在服务器上。当用户首次访问服务器时,服务器会为该用户创建一个新的会话,并将会话 ID 发送给客户端,通常通过 Cookie 或 URL 参数的方式。客户端在后续的请求中会将会话 ID 作为身份凭证发送给服务器,以便服务器能够识别用户并检索相关的会话数据。 - 关系CookieSession 通常一起使用来实现会话管理。服务器在创建会话时会生成一个唯一的 session ID,并将其存储在 Cookie 中发送给客户端。客户端在后续的请求中会自动将该 Cookie(包含 session ID)附加到请求中发送给服务器。服务器通过解析请求中的 session ID,可以找到对应的会话数据,从而实现用户状态的跟踪和数据的存储。 总结来说,Cookie 存储在客户端,用于保存会话标识符和其他相关数据;Session 存储在服务器端,用于存储和跟踪用户状态和数据。CookieSession 一起协作,实现了跨请求的会话管理功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

45度看我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值