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

回到顶部