- 存储的位置不同。session是基于cookie的,Session:服务端;Cookie:客户端。
- 存储的数据格式不同。Session:value为对象,Object任意类型;Cookie:二进制数据,ASCII字符串,如果我们存储一个对象,这个时候,就需要将对象转换为JSON。
- 存储的数据大小Session:受服务器内存控制;Cookie:一般来说,最大为4k。
- 生命周期不同Session:服务器端控制,默认是30分钟,注意,当用户关闭了浏览器,session并不会消失Cookie:客户端控制,其实是客户端的一个文件,分两种情况
1,默认的是会话级的cookie,这种随着浏览器的关闭而消失,比如保存sessionId的cookie
2,非会话级cookie,通过设置有效期来控制,比如这种“7天免登录”这种功能,就需要设置有效期,setMaxAge
cookie的其他配置httpOnly=true:防止客户端的XSS攻击path="/" :访问路径domain="":设置cookie的域名 - cookie可以通过设置属性长期保存,而session是依赖于jsessionId的cookie,不能长期保存,会话级别。
- cookie在客户端,不占用服务器资源,适合并发量大的项目;session每个用户都会产生,占用服务端内存。
- cookie支持跨域访问,而session不支持。
- cookie跟session之间的联系
http协议是一种无状态协议,服务器为了记住用户的状态,我们采用的是Session的机制。而Session机制背后的原理是,服务器会自动生成。
会话级的cookie来保存session的标识,如下图所示:
nginx使用ip_hash负载均衡策略可以避免session失效
Session跟Cookie的区别
最新推荐文章于 2023-03-22 21:34:42 发布