[英]Set-Cookie header no longer removing cookie
所以我已经使用了一段时间了
设定Cookie
res.cookie(AUTH_TOKEN_NAME, token, {
maxAge: AUTH_TOKEN_EXP,
domain: DOMAIN,
signed: true,
httpOnly: true
});
过期cookie
res.clearCookie(AUTH_TOKEN_NAME);
res.redirect(303, '/');
而且,它一直运行良好,但是直到最近才将其部署到生产中,此代码才停止工作。 注意事项:
x.domain.com
和DOMAIN=domain.com
(我也尝试.domain.com
也没有工作) path
/
如果未提供-无论如何,我这样做是为了排除它,这没有任何区别。 DOMAIN=localhost
从localhost:3000
运行 我不认为这是Express的问题,因为它似乎在做它的工作, 似乎问题出在浏览器上,但是它在本地运行的事实与该事实矛盾,因此我得出结论,这与它有关表达。
重新部署了node_modules
, node_modules
检查了版本等(无论如何我都使用了一个锁定文件),无法完全了解发生了什么。
HTTP请求
GET /logout HTTP/1.1
Host: x.domain.com
Connection: keep-alive
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://x.domain.com/
Accept-Encoding: gzip, deflate
Accept-Language: en-GB,en;q=0.9,en-US;q=0.8,da;q=0.7
Cookie: auth_token=xxxxxx
HTTP响应
HTTP/1.1 303 See Other
Content-Length: 50
Content-Type: text/html; charset=utf-8
Location: /
Vary: Accept
Server: Microsoft-IIS/10.0
Set-Cookie: auth_token=; Path=/; Expires=Thu, 01 Jan 1970 00:00:00 GMT
X-Powered-By: Express
X-Powered-By: ASP.NET
Date: Sun, 25 Feb 2018 13:24:01 GMT
版本号
明确的文档指出:“如果给定的选项与对res.cookie()相同的选项(不包括expires和maxAge),则Web浏览器和其他兼容的客户端只会清除cookie。”
因此,我建议您尝试:
res.clearCookie(AUTH_TOKEN_NAME, {
domain: DOMAIN,
signed: true,
httpOnly: true
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.