当前位置:首页 > JavaScript

js实现cookie

2026-04-04 04:58:15JavaScript

设置Cookie

使用document.cookie属性设置Cookie。格式为name=value,可附加可选参数如过期时间、路径、域名等。

document.cookie = "username=John Doe; expires=Thu, 18 Dec 2025 12:00:00 UTC; path=/";

参数说明:

js实现cookie

  • expires:设置过期时间(UTC格式)。
  • path:指定Cookie生效的路径,默认为当前路径。
  • domain:指定域名,默认为当前域名。
  • secure:仅通过HTTPS传输。
  • SameSite:限制跨站请求(Strict/Lax/None)。

读取Cookie

通过document.cookie获取所有Cookie(字符串形式),需手动解析:

js实现cookie

function getCookie(name) {
  const cookies = document.cookie.split(';');
  for (let cookie of cookies) {
    const [cookieName, cookieValue] = cookie.trim().split('=');
    if (cookieName === name) return decodeURIComponent(cookieValue);
  }
  return null;
}
console.log(getCookie("username")); // 输出 "John Doe"

删除Cookie

通过设置过期时间为过去的时间来删除Cookie:

document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

封装工具函数

以下是一个完整的Cookie操作工具示例:

const CookieUtil = {
  set(name, value, options = {}) {
    let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;
    if (options.expires instanceof Date) {
      cookie += `; expires=${options.expires.toUTCString()}`;
    }
    if (options.path) cookie += `; path=${options.path}`;
    if (options.domain) cookie += `; domain=${options.domain}`;
    if (options.secure) cookie += `; secure`;
    if (options.sameSite) cookie += `; SameSite=${options.sameSite}`;
    document.cookie = cookie;
  },

  get(name) {
    const cookies = document.cookie.split(';');
    for (let cookie of cookies) {
      const [cookieName, cookieValue] = cookie.trim().split('=');
      if (cookieName === encodeURIComponent(name)) {
        return decodeURIComponent(cookieValue);
      }
    }
    return null;
  },

  remove(name, path = '/') {
    this.set(name, '', { expires: new Date(0), path });
  }
};

// 使用示例
CookieUtil.set("theme", "dark", { expires: new Date(2025, 11, 31) });
console.log(CookieUtil.get("theme")); // "dark"
CookieUtil.remove("theme");

注意事项

  1. 编码与解码:使用encodeURIComponentdecodeURIComponent处理特殊字符。
  2. 大小限制:单个Cookie通常限制为4KB,每个域名下的Cookie数量有限(约20-50个)。
  3. 安全性:敏感数据避免存入Cookie,优先考虑HttpOnlySecure标记。
  4. 跨域限制:Cookie受同源策略约束,需通过domainpath参数明确作用范围。

标签: jscookie
分享给朋友:

相关文章

js实现图片上传

js实现图片上传

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现图片上传功能。HTML部分需要创建一个文件选择输入框和一个用于…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现图片预览

js实现图片预览

使用FileReader API实现图片预览 通过FileReader对象读取用户选择的图片文件并显示预览: const input = document.getElementById('image…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似:…