cookie和seesion的区别

cookie

cookie介绍

Cookie是一种在Web浏览器和Web服务器之间传递的小文件,用于存储用户的一些状态信息,如登录信息、用户偏好等。当用户访问一个网站时,网站会将一个包含Cookie信息的HTTP响应头发送给浏览器,浏览器将这些Cookie保存在用户的本地计算机上,下次用户访问该网站时,浏览器会自动将这些Cookie发送给服务器,服务器据此来识别用户。

cookie特点

  1. Cookie是存储在客户端的小文件,通常大小不超过4KB;
  2. Cookie可以通过设置过期时间来控制其有效期;
  3. Cookie可以在服务器端和客户端之间传递数据,但是数据会明文存储在客户端上,存在安全隐患;
  4. Cookie受浏览器的限制,不同浏览器对Cookie的数量和大小有不同的限制。

cookie原理

Cookie是通过设置HTTP响应头中的Set-Cookie字段来创建的,浏览器会自动将这些Cookie保存在用户的本地计算机上,并在下次用户访问该网站时将这些Cookie发送给服务器。

  1. 服务器发送Cookie
    当用户第一次访问一个网站时,服务器会在HTTP响应头中设置Set-Cookie字段,该字段包含了一个Cookie的名称、值、过期时间、作用域等信息。

  2. 浏览器保存Cookie
    浏览器收到服务器发送的Set-Cookie字段后,会将这些Cookie保存在用户的本地计算机上。浏览器根据服务器发送的Set-Cookie字段中的过期时间来决定Cookie的有效期,如果没有设置过期时间,则默认为当前会话期间。

  3. 浏览器发送Cookie
    当用户再次访问该网站时,浏览器会自动将保存在本地的Cookie发送给服务器。浏览器会在HTTP请求头中设置Cookie字段,该字段包含了所有与该网站相关的Cookie信息。

  4. 服务器处理Cookie
    服务器收到浏览器发送的Cookie后,会将其解析出来,并根据Cookie中的信息进行相应的处理。服务器可以使用Cookie来识别用户、存储用户偏好等信息。

session介绍

什么是session

Session是一种在Web应用服务器端维护用户状态的机制,用于存储用户的一些状态信息,如登录信息、购物车内容等。当用户访问一个网站时,网站会在服务器端创建一个Session,并分配一个唯一的Session ID,将这个Session ID通过Cookie等方式传递给客户端浏览器,下次用户访问该网站时,浏览器将这个Session ID带回服务器端,服务器据此来识别用户。

session特点

  1. Session是存储在服务器端的,通常会存储在内存或者数据库中,因此相对于Cookie更加安全;
  2. Session可以通过设置过期时间来控制其有效期;
  3. Session可以存储比Cookie更大的数据量;
  4. Session对客户端没有大小限制,因为只有一个Session ID存储在客户端中。
    需要注意的是,Session和Cookie都可以用于存储用户状态信息,但它们的实现方式和使用场景不同。在一些安全性要求较高的场景下,Session会更加适合。在需要跨域共享数据的场景下,Cookie会更加适合。

session原理

  1. 创建Session
    当用户第一次访问一个网站时,服务器会为该用户创建一个Session,并生成一个唯一的Session ID。Session ID可以通过Cookie等方式传递给客户端浏览器,以便下次用户访问该网站时能够自动识别该用户。

  2. Session ID传递
    服务器将Session ID传递给浏览器,通常是通过Cookie方式来传递。服务器会在HTTP响应头中设置Set-Cookie字段,该字段包含了Session ID等信息。

  3. 浏览器发送Session ID
    当用户再次访问该网站时,浏览器会自动将保存的Session ID发送给服务器。浏览器会在HTTP请求头中设置Cookie字段,该字段包含了保存的Session ID等信息。

  4. 服务器处理Session
    服务器收到浏览器发送的Session ID后,会根据Session ID来查找相应的Session。服务器可以使用Session来存储用户的登录信息、购物车内容等状态信息,以便下次用户访问该网站时能够继续使用这些状态信息。

前后端分离不推荐session的原因

  1. 分离了前后端的职责
    前后端分离的项目中,后端只负责提供API接口,不再涉及页面渲染等操作,因此不需要使用Session来维护用户的状态信息。前端通过调用后端API来获取数据,后端根据前端传递的Token进行用户身份验证,并根据Token中携带的用户信息来返回对应的数据。

  2. Session数据难以分布式管理
    在分布式系统中,多个服务器之间需要共享Session数据,需要进行相应的同步和管理。这增加了系统的复杂性和开发难度。

  3. Session容易引发跨域问题
    使用Session来维护用户状态时,需要将Session ID存储在Cookie中,但是Cookie会受到浏览器的限制,容易引发跨域问题。

  4. 增加了系统的开销
    使用Session需要在服务器端存储Session数据,增加了服务器的负担。如果是高并发系统,这些开销会更加明显。

  5. 不易扩展
    使用Session方式维护用户状态时,随着业务的增长,Session中存储的信息也会不断增加,这会导致Session数据量变大,不易扩展。
    综上所述,前后端分离的项目中,推荐使用Token来维护用户的状态信息,而不是Session。Token具有轻量级、无状态、易扩展等优点,更适合前后端分离的开发模式。

参考链接

  • 25
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二进制诗人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值