javascript 设置 cookie 必须显式指定 expires(gmt格式)或 max-age(秒数)、path(如 path=/),并编码值;同时可选 domain、secure 和 httponly。

JavaScript 中设置 Cookie 的过期时间和路径,关键在于正确构造 document.cookie 字符串,显式添加 expires(或 max-age)和 path 属性。浏览器不会自动帮你补全这些参数,漏写就可能变成会话 Cookie 或仅限当前路径生效。
用 expires 设置绝对过期时间
expires 必须是符合 GMT/UTC 格式的日期字符串,不能是毫秒时间戳或本地时间字符串。常用做法是创建 Date 对象并调用 toUTCString():
- 7 天后过期:const expires = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toUTCString();
- 拼入 cookie:
document.cookie = "token=abc123; expires=" + expires + "; path=/" - 注意:如果时间已过期(比如设成昨天),浏览器会立即删除该 Cookie
用 max-age 替代 expires 更可靠
max-age 是以秒为单位的相对时长,不依赖客户端时区,推荐优先使用:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 设置 30 天有效期:
document.cookie = "theme=dark; max-age=2592000; path=/" - max-age=0 或负数等效于立即过期,可用于删除
- 若同时写了 expires 和 max-age,现代浏览器以 max-age 为准
path 决定 Cookie 在哪些 URL 下可用
path 不是可选的“锦上添花”,而是影响作用域的关键属性。默认值是当前页面完整路径(如 /user/profile),这意味着其他路径无法读取它:
- 全站可用:
path=/(最常见,注意开头必须有斜杠) - 仅限后台:
path=/admin,那么/admin/users和/admin/logs都能访问,但/home不能 - path 区分大小写,且必须与实际 URL 路径前缀严格匹配
实际写法要带上编码和基础属性
真实项目中还需考虑中文或特殊字符、安全性及跨子域场景:
- 值必须用
encodeURIComponent编码:document.cookie = "name=" + encodeURIComponent("张三") + "; path=/; max-age=86400" - 总是显式写
path=/,避免因路径默认值导致读不到 - 如需跨子域(如 a.example.com 和 b.example.com 共享),加
domain=.example.com(注意开头的点) - 涉及敏感数据时,加上
Secure(仅 HTTPS)和HttpOnly(JS 无法读取)——后者需后端设置
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










