javascript可通过document.cookie设置cookie存储身份凭证,但仅作传输用途,不可替代后端验证;推荐后端设置httponly+secure cookie,前端仅触发登录/登出。

JavaScript 中可以通过 document.cookie 设置 Cookie 来存储身份认证凭证(如 token 或 session ID),但需注意:它仅适合传递凭证,**不能替代后端验证**,且存在安全风险。实际项目中更推荐使用 HttpOnly + Secure Cookie(由后端设置),前端只负责触发登录、登出等行为。
基础写法:用 document.cookie 设置凭证
直接赋值字符串即可写入 Cookie,格式为 key=value; options:
// 示例:登录成功后存入 JWT tokendocument.cookie = "auth_token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...; path=/; max-age=3600; secure; samesite=strict";
常用选项说明:
- path=/:让 Cookie 在整个站点生效(默认是当前路径)
-
max-age=3600:有效期 1 小时(单位秒),比
expires更推荐 - secure:仅在 HTTPS 下发送(生产环境必须加)
- samesite=strict 或 lax:防范 CSRF 攻击
读取和删除 Cookie 的简单封装
原生没有直接读取方法,需手动解析:
// 读取指定 key 的 Cookie 值
function getCookie(name) {<br>
const value = `; ${document.cookie}`;<br>
const parts = value.split(`; ${name}=`);<br>
return parts.length === 2 ? parts.pop().split(';').shift() : null;<br>
}
// 删除:设 max-age 为 0 即可
function deleteCookie(name) {<br>
document.cookie = `${name}=; max-age=0; path=/;`; <br>
}
重要安全提醒
仅靠前端设置 Cookie 存凭证有明显隐患:
- 不要存敏感信息明文(如密码、完整 token),token 也建议后端签名校验
- 避免用 JavaScript 写入 HttpOnly Cookie(它不可被 JS 读取,但更安全)
- 若用 localStorage 存 token,比 Cookie 更易受 XSS 泄露,不推荐
- 每次请求应由后端校验凭证有效性,前端不做权限判断逻辑
现代推荐做法:配合后端协作
典型流程如下:
- 用户登录 → 后端返回 HttpOnly + Secure Cookie(含 session ID 或加密 token)
- 后续请求浏览器自动携带该 Cookie,后端验证并返回用户数据
- 前端只需调用
fetch('/api/user'),无需手动传 token - 登出时后端清空服务端 session,并返回清除 Cookie 指令(或前端发登出请求)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











