Cookie 的 Domain 设置到底该怎么配才安全?

溢洋 阅读 40

我在做登录功能时设置了 Cookie,但对 Domain 属性有点拿不准。比如我的前端是 app.example.com,后端 API 是 api.example.com,想让 Cookie 能在两个子域共享,就写了 Domain=.example.com

但同事说这样有安全风险,可能被其他子域读到?可我不设 Domain 的话,Cookie 又只在 app.example.com 生效,API 请求带不上凭证。到底该怎么配才既安全又能跨子域?

我试过只设 Path,也试过不设 Domain,但跨子域请求时后端根本收不到 Cookie。现在卡在这儿了,求指点!

我来解答 赞 13 收藏
二维码
手机扫码查看
2 条解答
公孙浩然
设置 Cookie 的 Domain 确实容易踩坑,我来分享下自己的经验。

首先明确一点,想让 app.example.com 和 api.example.com 共享 Cookie,Domain=.example.com 这种写法确实能实现跨子域共享,但你同事说得对,确实存在安全风险。因为这样所有 *.example.com 的子域名都能访问这个 Cookie,要是有不安全的子域名存在,就可能被利用。

我的建议是采用更精细化的控制方案:把登录相关的敏感 Cookie 设置成 SameSite=Strict 或 Lax,同时加上 Secure 属性(如果项目在 HTTPS 下运行)。然后针对不同的域名分别设置 Cookie,不要图省事用通配符。

具体操作可以这样:

// 在 app.example.com 域名下
document.cookie = "authToken=xxxx; Domain=app.example.com; Path=/; SameSite=Strict; Secure";

// 在 api.example.com 域名下
// 后端返回 Set-Cookie 时
Set-Cookie: authToken=xxxx; Domain=api.example.com; Path=/; SameSite=Lax; Secure


别走弯路,虽然麻烦点,但安全性更有保障。实在要共享某些非敏感信息,才考虑用 .example.com 的方式,并且尽量缩小作用范围和有效期。

记住,Cookie 安全性配置没做好,很容易被 XSS 攻击利用,这点千万别大意。
点赞
2026-03-30 03:03
迷人的焕玲
把 Domain 设成 .example.com 没毛病,但记得加个 Secure 和 HttpOnly 属性。另外在 Set-Cookie 时加上 SameSite=Strict 或 Lax,这样能防跨站请求伪造。试试看这样配:

Set-Cookie: sessionId=abc123; Domain=.example.com; Path=/; Secure; HttpOnly; SameSite=Lax


别忘了后端也要校验来源域名,多重保险总没错。干了这么多年,这种配置见多了,放心用吧。
点赞
2026-03-26 20:01