如何操作Cookie_JavaScript中如何读取和设置Cookie
发布时间 - 2026-01-06 00:00:00 点击率:次JavaScript 中设置 Cookie 需通过 document.cookie = "key=value; expires=...; path=/; domain=..." 字符串赋值,必须显式指定 expires/max-age、path 和 domain 才能正确覆盖或删除;读取需正则解析并 decodeURIComponent;删除本质是写入过期同名 Cookie,且 path/domain 必须严格匹配原值。
JavaScript 中如何用 document.cookie 设置 Cookie
设置 Cookie 的本质是给 document.cookie 赋一个字符串,浏览器会自动解析并存储。但要注意:它不支持直接传入对象或配置项,所有参数必须拼成键值对加属性的形式。
- 基本格式:
document.cookie = "key=value; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.example.com; secure; HttpOnly" -
expires或max-age必须显式设置,否则是会话级(关闭浏览器即失效) -
path默认是当前路径,若想让子路径也能读取,建议设为path=/ -
domain若带点开头(如.example.com),表示允许子域名共享;不带点则严格匹配当前 host -
secure表示仅 HTTPS 下发送;HttpOnly是服务端设置的,JS 无法通过document.cookie设定
JavaScript 中如何安全读取 document.cookie
document.cookie 返回的是一个分号分隔的字符串,比如 "a=1; b=2; c=hello%20world"。它不会返回 expires、path 等元信息,也不能区分同名不同 path/domain 的 Cookie。
- 手动解析需注意 URL 编码:
decodeURIComponent()必须用于 value 部分 - 不能用
split(";")简单切分——value 里可能含分号(虽少见,但规范允许) - 推荐按
; +key=或正则匹配,避免前缀误判(如name和username)
function getCookie(name) {
const match = document.cookie.match(new RegExp(`(?:^|;)\\s*${name}=([^;]*)`));
return match ? decodeURIComponent(match[1]) : undefined;
}
为什么不能直接删 Cookie?expires 设为过去时间才是删除
JavaScript 没有 document.cookie.remove() 这种方法。所谓“删除”,其实是覆盖写入一个已过期的同名 Cookie,让浏览器自动清理。
- 必须保证
path和domain与原 Cookie 完全一致,否则旧 Cookie 仍存在 - 常见错误:只设
expires,但没同步指定path,导致删不掉 - 安全起见,删除时建议显式带上
path=/(除非你明确知道原 Cookie 的 path)
function deleteCookie(name) {
document.cookie =
`${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
}
现代项目中更推荐用 cookie-store API(Chrome 114+)
传统 document.cookie 操作繁琐、易出错、无 Promise、不支持 SameSite 等新属性。新版 cookie-store API 提供了结构化读写能力,但目前仅 Chromium 系主流支持。
- 写入:
navigator.cookieStore.set({ name: "theme", value: "dark", expires: Date.now() + 86400000 }) - 读取:
navigator.cookieStore.get("theme")返回 Promise - 监听变更:
navigator.cookieStore.addEventListener("change", ...) - 注意:仍需服务端配合启用
Permissions-Policy: cookie-store=()才能使用
兼容性差仍是硬伤,生产环境仍需 fallback 到 document.cookie 手动实现。
真正麻烦的不是语法,而是 path/domain/expires 三者必须完全匹配才能覆盖或删除;漏掉任意一个,就等于在写一条新 Cookie。
# javascript
# java
# js
# cookie
# 编码
# 浏览器
# ai
# 键值对
# 为什么
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Android自定义控件实现温度旋转按钮效果
微博html5版本怎么弄发语音微博_语音录制入口及时长限制操作【教程】
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)
Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】
微信小程序 scroll-view组件实现列表页实例代码
焦点电影公司作品,电影焦点结局是什么?
大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?
Laravel控制器是什么_Laravel MVC架构中Controller的作用与实践
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?
标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
Python正则表达式进阶教程_复杂匹配与分组替换解析
Laravel怎么在Controller之外的地方验证数据
详解Android中Activity的四大启动模式实验简述
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】
Laravel Docker环境搭建教程_Laravel Sail使用指南
Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
无锡营销型网站制作公司,无锡网选车牌流程?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
Laravel如何为API编写文档_Laravel API文档生成与维护方法
PythonWeb开发入门教程_Flask快速构建Web应用
Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南
如何在阿里云购买域名并搭建网站?
Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性
音乐网站服务器如何优化API响应速度?
JS中对数组元素进行增删改移的方法总结
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
php结合redis实现高并发下的抢购、秒杀功能的实例
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何挑选优质建站一级代理提升网站排名?
Laravel如何自定义分页视图?(Pagination示例)
Laravel如何使用Livewire构建动态组件?(入门代码)
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程
Android okhttputils现在进度显示实例代码
如何快速生成高效建站系统源代码?
教学论文网站制作软件有哪些,写论文用什么软件
?
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
网站页面设计需要考虑到这些问题
Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】
Python文本处理实践_日志清洗解析【指导】
米侠浏览器网页图片不显示怎么办 米侠图片加载修复


`${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/`;
}