记录一下:拦截器设置响应内容
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String referer = request.getHeader("referer");
// if (referer.contains("/doc.html")||referer.contains("/swagger-ui.html")){
// return true;
// }
//HandlerMethod=>Controller中标注@RequestMapping的方法
// 需要配置静态资源不拦截时,添加这块逻辑 => 前后端分离项目
if (!(handler instanceof HandlerMethod)) {//放行controller接口外的,如静态资源
return true;
//这里如果发现没有这个路径就会return true,但不会结束程序而是再次进入if判断,此时的url是一个/error的路径,这个路径不符合if的条件然后执行下面的代码
}
// 跨域配置
if (request.getHeader(HttpHeaders.ORIGIN) != null) {
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT, HEAD");
response.addHeader("Access-Control-Allow-Headers", "Content-Type");
response.addHeader("Access-Control-Max-Age", "3600");
}
//这句话的意思,是让浏览器用utf8来解析返回的数据
response.setContentType(MediaType.APPLICATION_JSON_VALUE);
//这句话的意思,是告诉servlet用UTF-8转码,而不是用默认的ISO8859
response.setCharacterEncoding("UTF-8");
String token = request.getHeader("token");
if (!validate(token)) {
//响应体 是json
JSONObject res = new JSONObject();
res.put("responsecode", "401");
res.put("responsename", "请重新登录");
response.getWriter().print(res.toString());
return false;
} else {
return true;
}
}