C# Web API存JWT到Cookie后前端无法删除仅POSTMAN可清除问题求助
问题根因
你在调用Response.Cookies.Delete()时未传入与Cookie创建时完全一致的安全属性配置,浏览器对Cookie删除的校验规则远严格于Postman:只有要删除的Cookie的键名、Secure、SameSite、HttpOnly、Domain、Path所有属性和创建时完全匹配,才会执行删除操作。你创建Cookie时指定了SameSite = SameSiteMode.None、Secure = true、HttpOnly = true,删除时未传入这些配置,浏览器会判定为匹配失败,保留原有Cookie。
修复方案
修改登出接口代码,删除Cookie时传入和登录接口完全一致的CookieOptions:
[Route("logout")] [HttpGet] public async Task<IActionResult> logout() { Response.Cookies.Delete("jwt", new CookieOptions { HttpOnly = true, SameSite = SameSiteMode.None, Secure = true }); return Ok(new { message = "Success" }); }
额外校验项
如果修改后仍未生效,可以排查以下两点:
- 若你创建Cookie时显式指定了
Domain或Path参数,删除时的CookieOptions也需要补充完全相同的Domain、Path值 - 确认后端CORS配置已开启
AllowCredentials(),且前端请求已携带credentials: 'include'(你当前的前端代码已满足该要求)
内容的提问来源于stack exchange,提问作者Sami
相关产品推荐
相关产品推荐

