cookie、session、localStorage、sessionStorage 分别是?
cookie:存储在浏览器上的一小段数据,用来记录当页面关闭或刷新后仍要记录的信息(客户端会话跟踪技术)。
session:用户输入账号密码提交给服务端,服务端在验证通过后创建一个session记录用户相关信息。这个session可保存在服务器内存中或保存在数据库。
localStorage、sessionStorage:HTML5本地存储web storage特性的api,用于将数据保存在浏览器中。localStorage用于长期存储数据(5M,最大5M-10M,因浏览器而异),没有时间限制的数据存储,除非手动清除。sessionStorage临时存储会话数据(5M,最大几百KB-几MB,因浏览器而异),在浏览器关闭后数据会丢失。
cookie、localStorage、sessionStorage区别
| 用途 | 存储大小 | 有效期 | |
|---|---|---|---|
| cookie | 用于客户端和服务端间的信息传递;服务器发给浏览器保存的(字符串)数据,一般用来记录用户信息,方便服务端确认用户身份 | 4K | 默认关闭浏览器失效 |
| localStorage | 本地存储,保存一些不太重要的数据,例如用户坐标、购物车信息等 | 5M | 永久,除非js手动清除或清除浏览器缓存 |
| sessionStorage | 本地存储,保存一些不太重要的数据,例如用户坐标、购物车信息等 | 5M | 页面不关闭就不失效,重新加载或恢复页面也不失效。但在新标签或窗口打开一个页面会重新生成。(会话级别) |
cookie和session的区别(浏览器)
cookie和session都是用来确认用户身份的。区别在于cookie保存在客户端,session保存在服务端。另外session是基于cookie的(服务器端生成session后,让客户端的cookie代为保存sessionID)
cookie禁用了,session还能用吗?
在默认情况下,如果禁用了Cookie,Session就不能使用了。这是因为Session的实现依赖于Cookie来存储会话ID。Session ID通常通过Cookie传递给客户端,客户端在每次请求时携带这个ID,服务器根据ID检索相应的会话数据。
禁用Cookie后的替代方案
如果客户端禁用了Cookie,仍然可以通过以下方式实现Session功能:
- URL重写:将Session ID作为URL的一部分附加在每个请求的URL上。服务器接收到请求后,从URL中提取Session ID并进行处理。
- 隐藏表单字段:将Session ID作为隐藏表单字段添加到表单中。当客户端提交表单时,Session ID随表单数据一起发送给服务器。
- URL参数传递:将Session ID作为查询参数添加到URL中。服务器需要解析URL参数,提取Session ID并进行处理。
通过这些替代方案,可以在禁用Cookie的情况下实现Session功能,确保应用程序的正常运行。
cookie的使用
const name = 'username';
const value = 'ceshi';
document.cookie = 'age=18'; // 设置:每次只能设置一对cookie
document.cookie = `${name}=${value}`;
const cookie = document.cookie; // 获取:获取cookie值, 获取特定的用循环
console.log(cookie);
// 删除:设置过期时间为过去的日期
// document.cookie = 'username=ceshi1;expires=Thu, 01 Jan 1970 00:00:00 GMT;';
const exp = new Date();
exp.setTime(exp.getTime() + 2 * 60 * 1000); // 过期时间 2min
document.cookie = `${name}=${escape(value)};expires=${exp.toUTCString()}`; // 过期时间需要GMT格式
console.log(`${name}=${escape(value)};expires=${exp.toUTCString()}`);
如果不在浏览器中设置过期时间,cookie被保存在内存中,生命周期随浏览器的关闭而结束(这种cookie简称会话cookie)
如果在浏览器中设置了cookie的过期时间,cookie被保存在硬盘中,关闭浏览器后,cookie数据仍然存在,直到过期时间结束才消失
扩展: