document.cookie 只能读取非 HttpOnly Cookie 的 name=value 字符串,无法获取 expires、path、domain、secure、HttpOnly 等元信息,这些由服务端通过 Set-Cookie 设置且不向 JavaScript 公开。

不能直接通过 document.cookie 读取 Cookie 的所有字段(比如 expires、path、domain、secure、HttpOnly 等),它只暴露一个经过简化处理的字符串,仅包含 name=value 对(且仅限非 HttpOnly 的 Cookie)。
document.cookie 只返回 name=value 部分
document.cookie 是一个**可读写但受限的接口**:读取时,浏览器会把当前域名下所有「客户端可访问」的 Cookie 拼成一个分号加空格(; )分隔的字符串,例如:
这里完全不体现 Path、Expires、Secure 等属性。而且,标记了 HttpOnly 的 Cookie 根本不会出现在这个字符串里 —— 这是浏览器的安全限制,JavaScript 无法感知它们的存在。
无法获取 expires、path、domain 等元信息
这些字段属于 Cookie 的「服务端设置元数据」,只在 HTTP 响应头 Set-Cookie 中由服务器指定,浏览器内部维护,但**不向 JavaScript 公开**。这意味着:
立即学习“Java免费学习笔记(深入)”;
- 你无法用 JS 判断某个 Cookie 是否设置了
Path="/admin" - 无法知道它什么时候过期(
Expires或Max-Age) - 无法确认是否标记为
Secure或SameSite -
HttpOnlyCookie 完全不可见,也不会出现在document.cookie中
实际读取和解析 name=value 的方法
虽然拿不到元信息,但你可以安全地提取键值对:
- 用
document.cookie.split('; ').map(pair => pair.split('=', 2))拆分 - 注意要对 value 调用
decodeURIComponent()(因为浏览器自动编码) - 推荐封装一个简单解析函数,避免手动处理空格和编码问题
例如:
const cookies = Object.fromEntries( document.cookie.split('; ').map(kv => { const [k, v] = kv.split('=', 2); return [k, v ? decodeURIComponent(v) : '']; }) );想看完整 Cookie 信息?只能靠开发者工具或服务端
如果调试需要查看所有字段:
- 打开浏览器 DevTools → Application → Cookies,左侧选站点,右侧列表会显示每条 Cookie 的
Name、Value、Domain、Path、Expires / Max-Age、Size、HttpOnly、Secure、SameSite - 服务端可通过请求头
Cookie(仅 name=value)或响应头Set-Cookie(含全部字段)完整管理


















