session和cookie关系

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与服务端中记录的进行比较,从而确定一个会话

基本过程:
在这里插入图片描述

发布了146 篇原创文章 · 获赞 82 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_40860852/article/details/102648410
今日推荐