HTTP协议中的Session、Cookie

HTTP协议中的Session、Cookie

Session 机制

HTTP 是一种不保存状态,即无状态(stateless)协议。也就是说 HTTP 协议自身不对请求和响应之间的通信状态进行保存。那么我们保存用户状态呢?Session 机制的存在就是为了解决这个问题, Session 的主要作用就是通过服务端记录用户的状态。典型的场景是购物 ,当你要添加商品到购物 的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了(一般情况下,服务器会在一定时间内保存这个Session,过了时间限制,就会销毁这个Session)。

在服务端保存 Session 的方法很多,最常用的就是内存和数据库(比如是使用内存数据库redis保存)。既然 Session 存放在服务器端,那么我们如何实现 Session 跟踪呢?大部分情况下,我们都是通过在 Cookie 中附加一个 Session ID 来方式来跟踪。

Cookie 被禁用怎么办?
最常用的就是利用 URL 重写把 Session ID 直接附加在URL路径的后面。

Cookie的作用是什么?和Session有什么区别?

Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。

Cookie 一般用来保存用户信息
①我们在 Cookie 中保存已经登录过得用户信息,下次访问网站的时候页面可以自动帮你登录的一些基本信息给填了;
②一般的网站都会有保持登录也就是说下次你再访问网站的时候就不需要重新登录了,这是因为用户登录的时候我们可以存放了一个 Token 在 Cookie 中,下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写);
③登录一次网站后访问网站其他页面不需要重新登录。Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物 ,当你要添加商品到购物 的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后就可以标识这个用户并且跟踪这个用户了。

Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端

Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中,最好能将 Cookie 信息加密然后使用到的时候再去服务器端解密。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
HTTP协议是一种用于传输超文本的通信协议,它是构建万维网的重要基础。HTTP使用客户端-服务器模式运作,客户端发起请求,服务器返回响应。传统的HTTP协议是无状态的,即每个请求都是相互独立的,服务器无法区分不同请求来自同一用户还是不同用户。 为了实现状态管理,引入了以下几种机制: 1. Cookie技术:服务器通过在响应头设置Set-Cookie字段,向客户端发送一个标识符(cookie),客户端会在后续的每个请求都携带该cookie。这样服务器就可以通过cookie来识别不同用户。 2. Session技术:服务器在接收到客户端请求时,会生成一个唯一的会话标识符(session ID),将该会话标识符与对应的状态信息保存在服务器端的存储介质(如内存、数据库等)。然后将session ID通过cookie或URL参数的方式发送给客户端,客户端在后续的请求都携带这个session ID。服务器通过session ID可以找到对应的状态信息,实现状态管理。 3. Token技术:令牌(token)是一种较为轻量级的状态管理方式。服务器在接收到客户端身份认证后,生成一个令牌并将其发送给客户端。客户端在后续的请求都携带这个令牌,服务器通过验证令牌的有效性来管理状态。 以上是常见的实现状态管理的方式,通过这些技术可以实现用户登录、用户认证、数据保持等功能。这些技术提供了一种机制,使得服务器能够跟踪和管理用户状态,为Web应用程序提供更多的功能和交互性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值