NodeJS中设置domain属性的HttpOnly Cookie无法删除问题求助
问题原因
res.clearCookie 的底层逻辑是给客户端返回一个过期时间为过去时间的同名Cookie,浏览器只会匹配所有属性和原Cookie完全一致的条目执行覆盖删除。你创建Cookie时指定了domain: '.mydomain.com'、httpOnly: true、secure: true三个配置,但删除时没有传入对应匹配参数,浏览器找不到对应Cookie条目,自然无法完成删除。你去掉domain配置后创建和删除的配置都没有domain属性,匹配一致就可以正常删除。
修复方案
修改登出逻辑,删除Cookie时传入和创建时完全一致的配置即可:
res.clearCookie('token', { domain: '.mydomain.com', httpOnly: true, secure: true });
如果创建Cookie时你还自定义了path等其他属性,删除时也要一同传入,保证所有配置项完全对齐。该方案可以正常支持www.mydomain.com和根域名mydomain.com的Cookie读写、删除需求,无需去掉domain配置。
内容的提问来源于stack exchange,提问作者Sam Leurs
相关产品推荐
相关产品推荐

