5月30日 01:00
Cookie 的 Domain 和 Path 有什么作用?如何设置?
Cookie 的 Domain 决定哪些域名会收到它,Path 决定哪些路径会收到它。默认不写 Domain 时,Cookie 通常只属于当前 host;写成父域如 example.com 时,子域也可能共享。Path 是路径前缀匹配,不是权限隔离,主要用于减少无关请求携带 Cookie。正确做法是按最小范围设置,登录态、后台、支付、静态资源不要混用一个宽泛 Cookie。
追问
不写 Domain 和写 Domain 有什么区别?
不写 Domain 更收敛,通常只给当前主机使用。写父域会扩大到子域,适合 SSO,但也扩大了泄露和冲突范围。现在前导点 .example.com 基本被忽略,关键是域本身是否合法。
Path=/api 能防止前端 JS 读取 Cookie 吗?
不能。Path 控制请求是否携带 Cookie,不是安全边界。要防 JS 读取,应设置 HttpOnly;要跨站防护,还要配合 SameSite 和 CSRF 方案。
Path 的匹配规则是什么?
它是前缀匹配。Path=/admin 会匹配 /admin 和 /admin/user,但设计时最好写清楚边界,避免 /admin-old 这类路径造成误判。
实际项目怎么设置?
会话 Cookie 尽量只给需要鉴权的域和路径;静态资源放到无 Cookie 域名;管理后台、支付、开放 API 分开命名和作用域,排查时也更清楚。
写段代码
httpSet-Cookie: sid=abc; Domain=example.com; Path=/; HttpOnly; Secure; SameSite=Lax Set-Cookie: admin=xyz; Path=/admin; HttpOnly; Secure; SameSite=Strict