java - 发生错误时如何从后端删除 cookie
问题描述
目前通过如下配置在 Spring Boot 项目中设置 http only cookie。
每当我调用以下端点时,此 cookie 都会正确设置。
@Bean
public CookieSerializer defaultCookieSerializer() {
DefaultCookieSerializer cookie = new DefaultCookieSerializer();
cookie.setDomainNamePattern(".*");
cookie.setCookieName("my_cookie");
cookie.setUseSecureCookie(true);
cookie.setUseHttpOnlyCookie(true);
cookie.setCookieMaxAge(1200);
return cookie;
}
可以看到,被调用的 cookiemy_cookie
被设置了 2 分钟。
在同一项目中的控制器中,我有以下控制器方法。
如果我输入错误块,我希望删除名为my_cookie
. 我怎样才能做到这一点?
这是我为此找到的最接近的问题,但考虑到我通过配置设置它,情况并不相同。
https://stackoverflow.com/questions/9821919/delete-cookie-from-a-servlet-response
@PostMapping(value = "/endpoint")
public List CustomResponse(
@RequestBody Request request,
) throws Exception {
CustomResponse response = null;
if (otherCookie != null) {
CustomResponse response = // perform some other rest request and get value from there
}
if (response == null) {
// I want to delete the cookie named `my_cookie` at this stage.
throw new CustomException('name');
}
return response;
}
解决方案
要删除 cookie,请将 Max-Age 指令设置为 0 并取消设置它的值。您还必须传递用于设置它的相同的其他 cookie 属性。不要将 Max-Age 指令值设置为 -1。否则,浏览器会将其视为会话 cookie。
// create a cookie
Cookie cookie = new Cookie("username", null);
cookie.setMaxAge(0);
cookie.setSecure(true);
cookie.setHttpOnly(true);
cookie.setPath("/");
//add cookie to response
response.addCookie(cookie);
更多内容请参考 Dzone 的帖子: https ://dzone.com/articles/how-to-use-cookies-in-spring-boot
推荐阅读
- javascript - 使用 ES6 类在 D3 可重用图表中添加缩放功能
- android - Firebase job dispatcher recurring job not working
- python-3.x - How to monitor systemd service with snmp
- reactjs - TypeScript:通过 React 中的多个组件向下传递的函数。
- android - Android OTA update: setting file permissions
- javascript - componentWillReceiveProps is getting multiple times after the router use in React
- c# - 如何使用 FastZip 一起压缩文件和文件夹?
- php - PHP 服务器处理 Python 请求发布
- python-3.x - IndexError:只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效的索引"
- python - 组合熊猫数据框中的列