如何解决使用 Ember 将 cookie 提供给同级域
在 Ember 应用中,我们使用 ember-cookie
设置 cookie。目前,userToken
cookie 仅对 www.example.com
可用。我需要让它也可用于 api.example.com
并期望下面的代码可以工作:即使 domain
(实际上是通过环境变量设置的)以“www”开头,cookie 也应该设置为 1级别更高(因此也可用于 api
子域)。
set cookieToken(token) {
let domain = 'www.example.com';
// Share with main domain (and API subdomain) even if host is www subdomain
if (domain.startsWith('www')) {
const apiSubdomain = domain.replace(/^www/,'');
this.cookies.write('userToken',JSON.stringify(token),{ path: '/',apiSubdomain })
}
}
然而,这种方法失败了:
- 预期域:.example.com
- 观察到的域:www.example.com
我还尝试明确为 api.example.com
设置 cookie:
if (domain.startsWith('www')) {
const apiSubdomain = domain.replace(/^www/,'api');
this.cookies.write('userToken',apiSubdomain })
}
结果是一样的:
- 预期域:api.example.com
- 观察到的域:www.example.com
我该怎么做才能使两个子域都可以访问此 cookie?
解决方法
问题是我没有在选项哈希中指定 domain
键。以下代码会起作用,因为 domain
等价于 domain: domain
:
this.cookies.write('userToken',JSON.stringify(token),{ path: '/',domain })
然而,在我的例子中,我以不同的方式命名了变量,所以我需要明确指定键:
this.cookies.write('userToken',domain: apiSubdomain })
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。