在一个Ember应用中,我们使用ember-cookie
设置cookie。目前,userToken
cookie仅对www.example.com
可用。我需要使它也对api.example.com
可用,并期望下面的代码能够工作:即使domain
(实际上是通过环境变量设置的)以“www”开头,cookie也应该设置得更高一级(因此也可用于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', JSON.stringify(token), { path: '/', apiSubdomain })
}
结果是一样的:
- 预期的网域:api.example.com
- 观察域:www.example.com
如何使此Cookie在两个子域中都可访问?
1条答案
按热度按时间slsn1g291#
问题是我没有在选项哈希中指定
domain
键,因为domain
等价于domain: domain
,所以下面的代码应该可以工作:然而,在我的例子中,我对变量的命名不同,因此我需要显式地指定键: