谈一谈session和cookie

       用户在登录完成之后,进行支付操作;但是由于业务场景需要,需要验证用户是否已经完成了登录;但是由于http 协议是无状态的,在进行支付请求时,是不知道用户之前已经进行了登录操作。此时需要一种机制去记录用户进行了哪些操作。

       再比如图片验证码,用户在第一次请求获取了图片验证码,用户在第二次请求时发送用户输入的验证码。此时服务器需要对验证码的对错进行校验。但是服务器是不知道该用户上次请求时产生的验证码数据,就造成了冲突。

       故需要一种机制去记录用户进行了哪些操作。于是就有了 cookie 和 session。

对于 cookie 而言,是在用户第一次访问时,将用户的信息写入到 cookie 中,并通过 response 返回并写入客户端;在第二次请求时,会携带该 cookie 信息,从而服务器就知道了用户上次的访问行为。

       但是由于 cookie 是将用户的信息,如服务器生成的验证码,写入在客户端,此时存在了被调用的风险;假定客户端从 cookie 中直接获取验证码信息,就导致了验证码失效的问题。故此时需要一种更加安全的机制,用于处理该问题。

       即 session,session是将用户的信息存储在服务器端,避免了被客户端破解的风险。session 是浏览器和服务器之间的一次会话,只要用户没有重启浏览器,其 sessionId 是不变的。故在第一次访问时,将需要的信息,保存在 session 中;在第二次请求时,直接从 session 获取对应的信息即可。

       但是直接在应用服务器通过 session 保存信息的方式,会占用应用服务器内存。此时可以通过建立专门的 session 服务器的方式,避免对应用服务器性能的消耗。此时可通过 redis ,Memcached 等方式保存;甚至可以使用 session 服务器集群的方式,避免单机下session服务器挂掉导致的数据丢失问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值