JavaScript Cookie & localStorage

本文详细介绍了Cookie和LocalStorage两种浏览器数据存储方式的使用。Cookie用于存储用户访问习惯,但不应保存敏感信息,可设置过期时间、访问域及路径。而LocalStorage则提供持久化的本地存储,适用于存储非敏感数据。文章还提供了封装好的Cookie操作函数,并对比了两者的特点和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Cookie

概述

  • Cookie全称HTTP Cookie,是浏览器存储数据的一种方式
  • 一般会自动随着浏览器每次请求发送到服务器
  • 可以利用Cookie跟踪统计用户访问该网站的习惯,如:访问时间、访问页面、停留时间
  • 不要在Cookie中保存重要信息

操作Cookie

查询

document.cookie; //hello=world; hello2=world2

设置

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

  • domain 限制访问Cookie的范围

path

  • 同一域名下,限制不同路径访问Cookie

HttpOnly

  • 设置HttpOnly属性的Cookie不能被JS访问

secure

  • 限定Cookie只能在https下使用

封装Cookie

//设置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;
};

//获取cookie
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);
        }
    }

};

//删除cookie
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); //Storage {age: "18", username: "Tom", sex: "男", length: 3}
console.log(localStorage.length); //3
console.log(localStorage.getItem("username")); //Tom
console.log(localStorage.getItem("age")); //18

删除

//删除指定数据
localStorage.removeItem("age"); 

//清除所有
localStorage.clear();
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值