Springboot前后端分离防坑小记
场景: 前后端不在一个服务器内, 前端能看到后端返回的cookie值,但是无法获取cookie的信息.
解决方案:
@GetMapping("/regImgCode") public void authImage(HttpServletRequest request, HttpServletResponse response,
@RequestParam(defaultValue = "120") int width ,
@RequestParam(defaultValue = "40") int height
) throws IOException {
//定义图形验证码的长、宽、验证码字符数、干扰线宽度
CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(width, height, 4, 20);
String uuid = IdUtil.simpleUUID();
IpUtil ipUtil = new IpUtil();
String ip = ipUtil.getIpAddr(request);
//验证码存入redis
redisUtil.set(uuid , captcha.getCode() , 60);
logger.info("CaptchaCode for key : {}", uuid);
//将验证码key,及验证码的图片返回
Cookie cookie = new Cookie("CAPTCHA", uuid);
//如果前后端分离,切不同域名端口,这里一定要这样设置
cookie.setPath("/");
response.addCookie(cookie);
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
OutputStream os = response.getOutputStream();
captcha.write(os);
os.flush();
os.close();
}
此处为大坑
//将验证码key,及验证码的图片返回 Cookie cookie = new Cookie("CAPTCHA", uuid);
//如果前后端分离,切不同域名端口,这里一定要这样设置
cookie.setPath("/");
这里一定要设置,不然前端能看到后端的传值,但是无法获取.
以上是 Springboot前后端分离防坑小记 的全部内容, 来源链接: utcz.com/z/512261.html