Javascript 使用Ember使cookie可用于同级域
在Ember应用程序中,我们使用Javascript 使用Ember使cookie可用于同级域,javascript,cookies,ember.js,Javascript,Cookies,Ember.js,在Ember应用程序中,我们使用Ember cookie设置cookie。目前,只有www.example.com可以使用userTokencookie。我需要将它也提供给api.example.com,并期望下面的代码能够工作:即使domain(实际上是通过环境变量设置的)以“www”开头,cookie也应该设置得更高一级(因此也可以用于api子域) 然而,这种方法失败了: 所需域:.example.com 观察域: 我还尝试显式地为api.example.com设置cookie: if
Ember cookie
设置cookie。目前,只有www.example.com
可以使用userToken
cookie。我需要将它也提供给api.example.com
,并期望下面的代码能够工作:即使domain
(实际上是通过环境变量设置的)以“www”开头,cookie也应该设置得更高一级(因此也可以用于api
子域)
然而,这种方法失败了:
- 所需域:.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 })
}
this.cookies.write('userToken', JSON.stringify(token), { path: '/', domain: apiSubdomain })
结果是一样的:
- 预期域:api.example.com
- 观察域:
如何使此cookie对两个子域都可访问?问题是我没有在选项哈希中指定
域
键。由于域
相当于域:域
,因此以下代码可以工作:
this.cookies.write('userToken', JSON.stringify(token), { path: '/', domain })
但是,在我的例子中,我对变量的命名不同,因此需要显式指定键:
if (domain.startsWith('www')) {
const apiSubdomain = domain.replace(/^www/, 'api');
this.cookies.write('userToken', JSON.stringify(token), { path: '/', apiSubdomain })
}
this.cookies.write('userToken', JSON.stringify(token), { path: '/', domain: apiSubdomain })