如何解决res.clearCookie在本地工作,但尚未部署到生产中
我正在使用我的apollo服务器来处理问题,并在用户登录或注销时清除cookie。 Cookie在本地会像应有的方式被清除,但是一旦我们将应用程序部署到生产服务器后,Cookie仍然没有错误或警告。
成功登录后将调用sendCookies 成功注销后将调用clearCookies
更新:由于.
被附加到引起问题的域的开头,因此看起来像是它。关于为何将.
附加到.
的任何想法,即使其将域设置为apps.dbiservices.com。我尝试对其进行硬编码,结果却相同。我知道有文章指出它忽略了// used to expire when day rolls over
const midnightExpiration = (date) => {
return new Date(date.getFullYear(),date.getMonth(),date.getDate() + 1,0);
};
// extract the domain from the req.origin.header
const extractDomain = (url) => {
return new URL(url)?.hostname;
};
// used to create our cookie
const cookieCreationoptions = (host) => {
return {
expires: midnightExpiration(new Date()),domain: process.env.NODE_ENV === 'production' ? COOKIE_DOMAIN : extractDomain(host),path: '/',httpOnly: true,secure: process.env.NODE_ENV === 'production' ? true : false,sameSite: 'Strict'
}
}
// used to set the expiration options for our cookies
const cookieExpirationoptions = (host) => {
return {
expires: new Date(0),sameSite: 'Strict'
}
}
// sends our cookies
const sendCookies = (req,res,newTokens) => {
if (stringToBoolean(USE_COOKIES)) {
res.header('Access-Control-Allow-Credentials',true);
res.header('Access-Control-Allow-Origin',req.headers.origin);
res.cookie('x-access-token',newTokens.accesstoken,cookieCreationoptions(req.headers.origin));
res.cookie('x-refresh-token',newTokens.refreshToken,cookieCreationoptions(req.headers.origin));
}
};
// clears out our cookies
const clearCookies = (_req,res) => {
res.clearCookie('x-access-token',cookieExpirationoptions);
res.clearCookie('x-refresh-token',cookieExpirationoptions);
};
,但这是阻止我的cookie被删除的原因。如果我编辑域并删除。并注销即可
这是我的功能,用于处理cookie选项的构建
override fun onCreate(savedInstanceState: Bundle?) {
//initialize stuff...
viewmodel.myData.observe(this) {
//do things with the data
}
lifeCycleScope.launch { viewmodel.loadData() }
}
如前所述,在本地运行两个客户端/服务器时,它都可以正常工作。您可以在“响应标头”中看到正在设置Cookie的任何想法,以了解如何使其更有效
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。