SpringBoot解决Cookie设置(无需修改谷歌浏览器)
1、Ajax 设置 withCredentials = true。
2、SpringBoot后端在Controller层传 Cookie。
@RequestMapping("/login")
@ResponseBody
public String login( HttpServletResponse response) throws UnsupportedEncodingException {
Cookie cookie = new Cookie("name", "tangjiahui");
cookie.setMaxAge(24 * 60 * 60 * 60);
response.addCookie(cookie);
return "this is login api.";
}
3、过滤器里面设置允许源:(注意:必须域名和后端接口域名一致,端口可以不一样)(如:前端localhost:9001和后端 localhost:8001)
@Component
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest reqs = (HttpServletRequest) req;
// 请求的源:
String origin= reqs.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", origin);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
chain.doFilter(req, res);
}
@Override
public void init(FilterConfig filterConfig) {
}
@Override
public void destroy() {
}
}