You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot项目发生异常时如何删除后端配置的HttpOnly Cookie

你可以直接通过操作HttpServletResponse构造匹配属性的过期Cookie实现删除,需保证删除时的Cookie属性和你统一配置的属性完全一致,否则浏览器不会识别删除操作。

实现步骤

  1. 先在控制器方法的入参中注入HttpServletResponse对象
  2. 在需要删除Cookie的位置构造同名Cookie,设置有效期为0,其余属性和你配置的my_cookie属性完全匹配后添加到响应中

完整代码示例

@PostMapping(value = "/endpoint")
public List CustomResponse(
        @RequestBody Request request,
        HttpServletResponse response // 注入响应对象
) throws Exception {

    CustomResponse customResponse = null;
    if (otherCookie != null) {
        customResponse = // perform some other rest request and get value from there 
    }

    if (customResponse == null) {
        // 构造删除用的Cookie,所有属性和你配置的保持一致
        Cookie removeCookie = new Cookie("my_cookie", null);
        removeCookie.setMaxAge(0); // 立即过期
        removeCookie.setPath("/"); // 和Cookie实际生效路径一致,默认Spring配置的Cookie路径为根路径
        removeCookie.setHttpOnly(true); // 匹配你配置的HttpOnly属性
        removeCookie.setSecure(true); // 匹配你配置的Secure属性,本地http测试时可临时设为false
        // 如果有配置固定域名,这里也要设置和生成时一致的域名:removeCookie.setDomain("你的域名")
        response.addCookie(removeCookie);

        throw new CustomException("name");
    }

    return customResponse;
}

注意事项

  • 必须保证删除Cookie时的HttpOnly、Secure、Path、Domain属性和初始生成Cookie的配置完全一致,否则浏览器会认为是两个不同的Cookie,不会执行删除操作
  • 若你使用了Spring Session,也可以调用request.getSession().invalidate()直接销毁会话,框架会自动帮你清除对应的Session Cookie,不需要手动构造Cookie

内容的提问来源于stack exchange,提问作者stacky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:24:02