javascript 设置 cookie 可指定 max-age/expires、path、domain、secure、samesite,但无法设置 httponly;max-age 优先于 expires;samesite=none 必须搭配 secure。

在 JavaScript 中设置 Cookie 的过期时间、路径(path)和安全属性(secure、httpOnly、sameSite),主要通过操作 document.cookie 字符串实现。但要注意:JavaScript 无法设置 HttpOnly 属性,该属性只能由服务器在响应头中设置;其余属性均可在前端通过字符串拼接方式指定。
设置过期时间(expires / max-age)
Cookie 过期时间有两种写法:expires(绝对时间)和 max-age(相对秒数)。浏览器优先使用 max-age(若两者都存在)。
-
expires:需传入Date.toUTCString()格式的格林威治时间字符串 -
max-age:直接写整数,单位为秒(如max-age=3600表示 1 小时后过期)
✅ 示例(1 小时后过期):
// 使用 max-age(推荐)
document.cookie = "username=john; max-age=3600; path=/";
<p>// 使用 expires
const d = new Date();
d.setTime(d.getTime() + 3600 * 1000);
document.cookie = <code>username=john; expires=${d.toUTCString()}; path=/</code>;</p>指定路径(path)与作用域(domain)
path 决定 Cookie 在哪些 URL 路径下被发送,默认为当前页面路径(如 /user/profile)。设为 / 表示整个域名下都有效。
-
path=/:根路径,全站可用 -
path=/admin:仅/admin及其子路径(如/admin/users)可访问 -
domain(可选):指定可共享 Cookie 的域名(如domain=.example.com支持子域);注意不能设为其他主域(如从a.com设domain=b.com无效)
✅ 示例(仅限 /api 下发送,且支持子域):
document.cookie = "token=abc123; path=/api; domain=.myapp.com";
启用安全属性(secure、sameSite)
提升 Cookie 安全性的重要配置:
-
secure:仅通过 HTTPS 协议传输(HTTP 页面中设置会静默失败) -
sameSite:防范 CSRF,可选Lax(默认)、Strict或None;若设None,必须同时声明secure
✅ 示例(HTTPS 环境下启用严格同源策略):
document.cookie = "sessionid=xyz; secure; sameSite=Strict; path=/";
⚠️ 注意:sameSite=None 在 Chrome 80+ 后必须搭配 secure,否则会被拒绝。
注意事项与限制
JavaScript 设置 Cookie 有明确边界:
-
HttpOnly无法通过 JS 设置或读取——这是安全设计,防止 XSS 盗用敏感 Cookie - 每个 Cookie 大小上限约 4KB,总数量和大小受浏览器限制
- 设置失败通常无报错,建议用
document.cookie读取验证(但 HttpOnly Cookie 不会返回) - 现代开发更推荐使用
fetch+ 后端 API 管理会话,前端只存非敏感标识
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











