ember.js 使用Ember使Cookie可用于同级域

nwwlzxa7  于 2022-11-05  发布在  其他
关注(0)|答案(1)|浏览(114)

在一个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 })
  }
}

然而,这种方法失败了:

我还尝试显式设置api.example.com的cookie:

if (domain.startsWith('www')) {
  const apiSubdomain = domain.replace(/^www/, 'api');
  this.cookies.write('userToken', JSON.stringify(token), { path: '/', apiSubdomain })
}

结果是一样的:

如何使此Cookie在两个子域中都可访问?

slsn1g29

slsn1g291#

问题是我没有在选项哈希中指定domain键,因为domain等价于domain: domain,所以下面的代码应该可以工作:

this.cookies.write('userToken', JSON.stringify(token), { path: '/', domain })

然而,在我的例子中,我对变量的命名不同,因此我需要显式地指定键:

this.cookies.write('userToken', JSON.stringify(token), { path: '/', domain: apiSubdomain })

相关问题