javascript 设置 cookie 需通过 document.cookie 字符串赋值,键值对须用 encodeuricomponent 编码,过期时间用 gmt 字符串(expires)或 max-age(秒),并显式设置 path、domain 等属性;读取时需手动拆分、解码。

JavaScript 中设置 Cookie 的过期时间与存储键值对,核心是通过 document.cookie 字符串赋值,并在值中用分号拼接 expires(或 max-age)、path、domain 等属性。它不提供原生的 set/get 方法,需手动解析和构造字符串。
设置带过期时间的 Cookie
Cookie 过期时间必须是 GMT 格式的日期字符串(不是毫秒时间戳),常用 Date.toUTCString() 生成。例如设置 7 天后过期:
- 先创建 Date 对象:
const expires = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000) - 转为 GMT 字符串:
expires.toUTCString() - 拼入 cookie 字符串:
document.cookie = "username=john; expires=" + expires + "; path=/"
注意:expires 是绝对时间;也可用 max-age=604800(单位秒)替代,更推荐——它基于客户端当前时间计算,不受本地时区影响。
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
安全写入键值对数据
Cookie 的键和值都需 URL 编码,避免分号、逗号、空格等特殊字符导致解析错误:
- 使用
encodeURIComponent()编码键和值,例如:encodeURIComponent("user name") - 不要直接拼接未编码的中文或符号,否则可能截断或失效
- 完整示例:
document.cookie = encodeURIComponent("theme") + "=" + encodeURIComponent("dark") + "; expires=" + new Date(Date.now() + 86400000).toUTCString() + "; path=/"
读取和解析 Cookie 键值对
document.cookie 返回的是一个分号分隔的字符串(如 "a=1; b=2; c=hello%20world"),需手动拆分和解码:
- 按
"; "拆成数组,再用=分割每项的键和值 - 对值使用
decodeURIComponent()解码 - 可封装简单工具函数:
function getCookie(name) {<br> const cookies = document.cookie.split("; ");<br> for (let cookie of cookies) {<br> const [k, v] = cookie.split("=");<br> if (k === name) return decodeURIComponent(v);<br> }<br> return null;<br>}
其他关键注意事项
实际使用中容易忽略但影响功能的细节:
-
path=/要显式设置,否则默认为当前路径,导致其他路由下读不到 - 跨子域共享需指定
domain=.example.com(注意开头的点) - 敏感数据建议加
Secure(仅 HTTPS)和HttpOnly(JS 不可读,但 JS 设置时无法设 HttpOnly) - 单个 Cookie 最大 4KB,总数量和大小受浏览器限制,不宜存大量数据
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










