前后端分离,跨域
前端发送请求
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("Token");
if (token.isEmpty()){
response.setStatus(401);
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.println("未查询到认证信息");
return false;
}
boolean b = authClient.checkToken(token);
if (!b){
response.setStatus(401);
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.println("未查询到认证信息");
return false;
}
return true;
}
后端始终报空指针异常,无法正常获取参数
原因
会在发起正式请求之前先发送一个预检请求OPTIONS,需要将此请求过滤
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
if ("OPTIONS".equals(request.getMethod())){
return true;
}
String token = request.getHeader("Token");
if (token.isEmpty()){
response.setStatus(401);
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.println("未查询到认证信息");
return false;
}
boolean b = authClient.checkToken(token);
if (!b){
response.setStatus(401);
response.setCharacterEncoding("utf-8");
PrintWriter writer = response.getWriter();
writer.println("未查询到认证信息");
return false;
}
return true;
}
什么情况下会存在OPTIONS请求
https://blog.csdn.net/weixin_34074740/article/details/91444311