javascript - 使用 Ember 使 cookie 可用于兄弟域
问题描述
在 Ember 应用中,我们使用ember-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?
解决方案
问题是我没有domain
在选项哈希中指定键。下面的代码会起作用,因为domain
它相当于domain: domain
:
this.cookies.write('userToken', JSON.stringify(token), { path: '/', domain })
然而,在我的例子中,我以不同的方式命名了变量,所以我需要明确指定键:
this.cookies.write('userToken', JSON.stringify(token), { path: '/', domain: apiSubdomain })
推荐阅读
- javascript - 将字符串格式的数组转换为javascript数组
- azure - 如何仅在 AzureDevops 中下载最新的带有视图名称的 UniversalPackage?
- typescript - 如何使电子通道更安全?
- angular - 无法在 Angular 中访问 formArray 的值
- android - 在完成帖子执行之前切换到另一个片段时,应用程序崩溃,并显示此错误
- laravel - Laravel:production.ERROR:异常'ErrorException',消息'试图获取非对象的属性'
- ios - Xib 文件中的表格视图无法正确加载自定义表格视图单元格
- java - 如何使用 CameraX 构建我的自定义相机?
- c - 交叉编译程序中的编写问题(Linux -> Windows)
- android - Build failed in add firebase when added apply plugin: 'com.google.gms.google-services'