You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在根域名与指定子域名间共享Devise会话cookie且不扩散至其他子域名

方案说明

完全可以实现只在根域名和指定子域名之间共享Devise会话cookie,不需要开放给所有子域名。你只需要按以下步骤调整Rails侧配置即可:

1. 修改会话存储配置

打开 config/initializers/session_store.rb,将会话cookie的生效域名指定为你需要的两个域名,不要使用泛域名配置:

Rails.application.config.session_store :cookie_store,
  key: '_your_app_session', # 替换为你实际的会话cookie名
  domain: ['mydomain.com', 'app.mydomain.com'],
  tld_length: 2 # 顶级域为.com/.net等一级后缀保持2,为.com.cn等二级后缀改为3

2. 对齐Devise cookie配置

打开 config/initializers/devise.rb,配置相同的域名规则:

config.cookie_domain = ['mydomain.com', 'app.mydomain.com']

额外配套配置

  • Rails侧跨域配置需要放开app.mydomain.com的访问权限,同时开启credentials支持,避免跨域拦截。
  • Vue端发起请求时需要开启携带凭证配置,以axios为例,全局配置axios.defaults.withCredentials = true即可自动带上会话cookie。
  • 不要使用domain: :all或者domain: '.mydomain.com'这类泛域名配置,这两种写法都会让cookie共享给所有子域名,不符合你的需求。

按以上配置完成后,会话cookie仅会在mydomain.com和app.mydomain.com下生效,浏览器不会向staging.mydomain.com等其他子域名携带该cookie。

内容的提问来源于stack exchange,提问作者domi91c

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:30:03