首页 > 解决方案 > 使用 Ember 使 cookie 可用于兄弟域

问题描述

在 Ember 应用中,我们使用ember-cookie. 目前,该userTokencookie 仅可供使用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?

标签: javascriptcookiesember.js

解决方案


问题是我没有domain在选项哈希中指定键。下面的代码会起作用,因为domain它相当于domain: domain

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

然而,在我的例子中,我以不同的方式命名了变量,所以我需要明确指定键:

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


推荐阅读