javascript可通过document.cookie读取(需解析字符串)、设置(需编码及属性)和删除(设过期时间)cookie,但无法读取httponly cookie,且受大小、域名路径等限制。

JavaScript 可以通过 document.cookie 读取和设置 Cookie,但不能直接删除 Cookie(需设为过期时间),也不能读取设置了 HttpOnly 标志的 Cookie(这类 Cookie 仅服务端可访问)。
读取 Cookie
document.cookie 返回的是一个字符串,格式为 key1=value1; key2=value2; key3=value3,多个键值对用分号加空格分隔。需要手动解析才能获取指定键的值。
常用做法是封装一个函数提取某个 key 的值:
function getCookie(name) {
const cookies = document.cookie.split('; ');
for (let cookie of cookies) {
const [key, value] = cookie.split('=');
if (key === name) {
return decodeURIComponent(value);
}
}
return undefined;
}
// 使用示例
console.log(getCookie('username')); // 如存在则返回解码后的值
设置 Cookie
给 document.cookie 赋值即可新增或覆盖同名 Cookie。注意:赋值时必须包含完整的键值对及可选属性,且值需用 encodeURIComponent() 编码(尤其含特殊字符时)。
基本语法:
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
document.cookie = "key=value; expires=Thu, 01 Jan 2030 00:00:00 GMT; path=/; domain=.example.com; secure; samesite=Lax";
常用选项说明:
- expires 或 max-age:控制有效期(不设则为会话 Cookie,关闭浏览器即失效)
-
path:指定可访问该 Cookie 的路径,默认为当前路径(建议设为
/以便全站访问) -
domain:指定可访问的域名(如
.example.com允许子域名共享) - secure:仅在 HTTPS 下发送
-
SameSite:防范 CSRF,可选
Strict、Lax(推荐)、None(需同时配secure)
删除 Cookie
浏览器不提供直接删除方法,但可通过覆盖方式“删除”:将值设为空,并把过期时间设为过去的时间点。
示例:
function deleteCookie(name) {
document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/;`;
}
// 使用
deleteCookie('session_id');
注意:删除时的 path 和 domain 必须与设置时一致,否则可能删不掉。
注意事项与限制
- 无法读取标记为
HttpOnly的 Cookie(防止 XSS 窃取敏感信息) - Cookie 总大小通常限制在 4KB 左右,单个域名下总条数也有限制(各浏览器不同)
- 第三方上下文(如 iframe)中,Chrome 等浏览器默认启用
SameSite=Lax,可能影响跨域 Cookie 发送 - 现代开发中,非必要不推荐用 Cookie 存储大量数据或敏感信息,优先考虑
localStorage或服务端 session
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










