使用node.js速成库清除注销时的cookie
app.post('/logout', (req, res, next) => {
// cookie-session library used hence req.session = null is valid
req.session = null;
res.clearCookie('auth');
res.end();
});在所有的桌面机器上,Android设备上都能很好地工作,但在IOS设备浏览器(Firefox、Chrome、Safari等)上却不起作用。所有IOS测试设备都是14+版本。
尝试了clearCookie res.clearCookie函数不删除cookie的可用选项,但没有结果。
但是,在IOS设备上使用隐名模式是有效的,这意味着cookie被清除,同时关闭浏览器(清除会话)也有效。
设置cookie (登录)时,我使用默认值
res.cookie('auth')
有人知道发生了什么事吗?
编辑
在iPhone5c上试用了IOS 10,它可以工作。似乎真的是14+的问题
发布于 2021-02-04 09:50:14
一些背景资料。根据HTTP规范,没有办法删除cookie。清除cookies的常见方法是将过期时间设置为过去的某个时间( express中的clearCookie函数使用这种方法)
clearCookie()的源代码
res.clearCookie = function clearCookie(name, options) {
var opts = merge({ expires: new Date(1), path: '/' }, options);
return this.cookie(name, '', opts);
}问题可能在于IOS 14中新的隐私特性所导致的cookie设置问题,这意味着对cookie的设置有一个非常严格的政策。可能"clearCookie“使用的”设置过期“方法在IOS 14中是不允许的。
顺便说一句,一定要在"options“对象中检查"path”属性是否正确。
https://stackoverflow.com/questions/65869993
复制相似问题