如何实现customer.app.com与admin.app.com的独立Cookie会话?
要解决两个子域名站点共享Cookie导致会话混淆的问题,核心是通过Cookie的属性配置实现隔离,以下是具体可行的方案:
1. 为不同站点设置专属的Cookie Domain
默认如果Cookie的Domain设置为.app.com,所有子域名都会共享该Cookie。要实现隔离,需动态设置Domain:
- 当请求来自
admin.app.com时,api接口设置Cookie的Domain为admin.app.com,而非顶级通配的.app.com - 当请求来自
customer.app.com时,同理设置Domain为customer.app.com - 实现方式:通过请求头的
Origin或Referer字段识别请求来源站点,在Set-Cookie响应头中动态指定对应的Domain值
2. 使用差异化的Cookie名称
如果需要保持Domain为.app.com(比如有跨子域名的其他需求),可以通过不同的Cookie名称做隔离:
- 给admin站点的令牌命名为
admin_accessToken、admin_refreshToken - 给customer站点的令牌命名为
customer_accessToken、customer_refreshToken - 接口处理请求时,根据请求来源读取对应名称的Cookie,各自维护独立的会话状态
3. 配合Path属性强化隔离(辅助手段)
可以给不同站点的Cookie设置专属Path:
- admin站点的Cookie设置
Path=/admin - customer站点的Cookie设置
Path=/customer - 注意:这种方式仅当api接口的路径有明确区分时生效,通常作为前两种方案的补充,不能单独作为核心隔离手段
验证方法
完成配置后,通过浏览器开发者工具(Application -> Cookies)验证:
- 登录admin.app.com后,仅能看到Domain为
admin.app.com或名称带admin前缀的Cookie - 登录customer.app.com后,仅能看到对应自己站点的Cookie,两个站点的Cookie完全独立
内容的提问来源于stack exchange,提问作者FindL
相关产品推荐
相关产品推荐

