Cookies和Session

发布时间 2023-12-05 16:53:04作者: 路鸣

Cookies和Session都是为了解决HTTP协议无状态性而引入的技术,它们用于在多个请求之间保持用户状态。

Cookies存储在客户端;

Session存储在服务器端;

两者怎么联系使得http保持了用户状态呢?

其实服务器首先创建session,生成sessionID,并通过cookie返回给了浏览器,这样浏览器就获得了sessionID,以asp.net core为例,生成的cookie名称默认是.AspNetCore.Session,当然也可以自定义名称;

由于session可也设置空闲超时时间,所以如果浏览器一段时间不操作,session就过期了,浏览器再用这个sessionID请求就失败了;

还有一种场景是关闭浏览器立即就要重新登录,这种场景是通过设置cookie为非持久化的方式,上面说了,sessionID是放在浏览器的cookie里的,把存放sessionID的cookie设为非持久化的,浏览器关闭时,这个cookie就没了,自然就无法带上sessionID,虽然实际上session在服务端还存在着,所以session一般要设置过期时间(空闲超时时间),以及定期清理过期session的机制,一般可采用redis存储session,因为redis自带过期机制,防止session越来越多占用太多资源。