session和cookie关系

之前总是对session和cookie这两个概念很模糊,今天就研究下他们的原理和关系

在说session和cookie之前,我们先来说说session和cookie出现的原因

众所周知,http是无状态的,也就是说在客户端和服务器连接期间,客户端向服务器发送的请求是不带用户信息的,所以我们是无法辨别出这个请求是哪个用户发出的。

为了解决这个问题,就得借助其他技术,cookie和session就由此诞生

首先需要阐明的一点:session是一种网络通讯的会话机制,而cookie只是实现这种机制的主流方案中的一个,cookie一般是用来保存sessionID的

Cookie原理

Cookie是存储在客户端的一段数据,通常记录一些网站的密码和用户名等,当客户端发送请求的时候,服务端需要记住这个用户的信息,就在返回给前端的数据中设置Cookie,客户端接受到这个请求后,会把Cookie保存起来,当再次访问服务器的时候将会带上这个Cookie,服务器通过这个Cookie来获取用户状态

基本过程:

Cookie有很多的参数,可以根据这些参数设置Cookie的过期时间和是否能被js更改等

如果客户端禁用了Cookie,通常客户端会采用url重写技术,比如会在url后面加上一个诸如sid=xx的参数

Session原理

session是保存在服务端的,当用户登录系统后,服务端会根据一个算法,生成一个sessionID,这个sessionID唯一标识一个会话,服务端将这个sessionID存储在内存中,数据库或者文件当中,并设定一定的有效期,并将sessionID写入到Cookie当中返回给客户端,当下一次客户端请求的时候会带上sessionID,服务端会将客户端中的Cookie与服务端中记录的进行比较,从而确定一个会话

基本过程:

参考链接:

juejin.im/post/5aede2…

juejin.im/post/5bbc47…

转载于:https://juejin.im/post/5c2e326f6fb9a04a0d56fa6c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值