javascript通过document.cookie操作cookie需手动解析字符串,读取时用split和decodeuricomponent处理,设置时注意expires、path、domain等参数,删除需覆盖为过期时间,推荐封装工具函数或使用js-cookie库。

JavaScript 通过 document.cookie 读取和修改浏览器 Cookie,但它不是直接返回一个对象或数组,而是一个格式固定的字符串,需要手动解析和拼接。操作简单但细节容易出错,比如路径、域名、有效期、安全标志等都影响写入是否成功。
读取 Cookie:解析 document.cookie 字符串
document.cookie 返回的是一个分号加空格分隔的字符串,形如:
"username=john; expires=Fri, 31 Dec 2024 23:59:59 GMT; path=/; domain=.example.com"
要获取某个键(如 theme)的值,需按以下步骤处理:
- 用
document.cookie.split('; ')拆成键值对数组 - 遍历每项,用
split('=')分离键和值 - 注意解码:Cookie 值可能被
encodeURIComponent编码过,要用decodeURIComponent还原 - 匹配时建议用
key + '='开头的方式,避免子串误匹配(如name匹配到username)
设置 Cookie:拼接字符串并赋值给 document.cookie
向 document.cookie 写入字符串即可新增或覆盖同名 Cookie。格式为:
"key=value; expires=...; path=...; domain=...; secure; HttpOnly; SameSite=Lax"
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
关键参数说明:
-
value:必须是字符串,建议用
encodeURIComponent编码特殊字符(空格、分号、逗号等) -
expires 或 max-age:决定有效期。不设则为会话 Cookie(关闭标签页即失效);
expires要传Date.toUTCString()格式的时间字符串 -
path:默认为当前路径,设为
/表示整个域名下都可访问 -
domain:可选,用于跨子域共享(如设为
.example.com,则app.example.com和api.example.com都能读取) - secure:仅在 HTTPS 下发送(生产环境建议加上)
-
SameSite:防 CSRF,常见值有
Lax(默认)、Strict、None(若设None,必须同时带secure)
删除 Cookie:覆盖为过期时间
Cookie 无法直接“删除”,只能通过覆盖方式使其立即失效:
- 将
expires设为一个过去的日期(如Thu, 01 Jan 1970 00:00:00 GMT) - 必须保证 path 和 domain 与原 Cookie 完全一致,否则旧 Cookie 仍存在
- 例如删除
cartId(原设置路径为/shop):document.cookie = "cartId=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/shop";
推荐封装工具函数(轻量实用版)
避免每次手动解析,可封装三个基础方法:
-
getCookie(key):安全提取值,自动解码 -
setCookie(key, value, options = {}):支持expires(Date 对象)、maxAge(秒数)、path、domain、secure、sameSite -
removeCookie(key, options):调用setCookie写入过期时间
这类函数网上有成熟轻量实现(如 js-cookie),不到 3KB,兼容性好,值得直接使用。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










