Cookie
概述
- Cookie全称HTTP Cookie,是浏览器存储数据的一种方式
- 一般会自动随着浏览器每次请求发送到服务器
- 可以利用Cookie跟踪统计用户访问该网站的习惯,如:访问时间、访问页面、停留时间
- 不要在Cookie中保存重要信息
操作Cookie
查询
document.cookie;
设置
document.cookie = "key1=value1";
document.cookie = "key2=value2";
encodeURIComponent & decodeURIComponent
encodeURIComponent
用于处理Cookie中的非英文字符decodeURIComponent
用于解码
document.cookie = `username=${encodeURIComponent("小明")}`;
expires & max-age
expires
指定失效时间max-age
指定当前时间多少秒后过期;当max-age
的值是0或负数,则Cookie会被删除- 失效的Cookie会被浏览器清除
- 没有设置失效时间的Cookie会被称为会话Cookie,它存在内存中,当会话结束或浏览器关闭Cookie会被清除
document.cookie = `key1=value1;expires=${new Date("2022-1-1 00:00:00")}`;
document.cookie = `key2=value2;max-age=5`;
domain
path
HttpOnly
- 设置
HttpOnly
属性的Cookie不能被JS访问
secure
封装Cookie
const setCookie = (name, value, { maxAge, domain, path, secure } = {}) => {
let cookieText = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
if (typeof maxAge === "number") {
cookieText += `;max-age=${maxAge}`;
}
if (domain) {
cookieText += `;domain=${domain}`;
}
if (path) {
cookieText += `;path=${path}`;
}
if (secure) {
cookieText += `;secure`;
}
document.cookie = cookieText;
};
const getCookie = name => {
name = `${encodeURIComponent(name)}`;
const cookies = document.cookie.split("; ");
for (const item of cookies) {
const [cookieName, cookieValue] = item.split("=");
if (cookieName === name) {
return decodeURIComponent(cookieValue);
}
}
};
const removeCookie = (name, { domain, path } = {}) => {
setCookie(name, "", { domain, path, maxAge: -1 });
}
export { setCookie, getCookie, removeCookie };
LocalStorage
概述
- LocalStorage是浏览器存储数据的一种方式,它只存储在本地,不会发送到服务器
- LocalStorage是持久化的本地存储
- SessionStorage是会话结束时,才会被清空
使用
设置
localStorage.setItem("username", "Tom");
localStorage.setItem("age", "18");
localStorage.setItem("sex", "男");
查询
console.log(localStorage);
console.log(localStorage.length);
console.log(localStorage.getItem("username"));
console.log(localStorage.getItem("age"));
删除
localStorage.removeItem("age");
localStorage.clear();