如何在Scala+Play框架中指定Cookie域名实现子域共享
你遇到的问题核心是:application.conf里的session.domain配置仅对Play框架内置的session Cookie生效,而你手动创建的id和token Cookie并没有指定域名属性,所以浏览器默认将它们绑定到当前域名test.domain.com,自然无法在anothertest.domain.com中访问。
解决步骤
直接在创建自定义Cookie时显式指定domain参数即可:
Ok("some response").withCookies( Cookie("id", id, domain = Some(".domain.com")), Cookie("token", token, domain = Some(".domain.com")) )
额外注意事项
- 确保域名格式正确:以
.开头的域名(.domain.com)会让Cookie对所有子域生效,包括test.domain.com、anothertest.domain.com等 - 建议根据实际需求开启
secure和httpOnly属性,提升Cookie安全性:Cookie("id", id, domain = Some(".domain.com"), secure = true, httpOnly = true) - 确认当前域名确实是目标父域的子域,浏览器不允许将Cookie设置到比当前域名更高层级的无关域名
内容的提问来源于stack exchange,提问作者Himal Regmi
相关产品推荐
相关产品推荐

