Javascript 使用Ember使cookie可用于同级域

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应用程序中,我们使用
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 })