第一步:
创建LoginInterCeptor类,继承HandlerInterCeptor
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse res, Object handler) throws Exception {
String method = req.getMethod();
// 检查请求方法是否为OPTIONS,如果是则直接返回true表示放行
if ("OPTIONS".equals(req.getMethod())) {
log.info("这是Option请求,直接放行");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
res.setHeader("Access-Control-Max-Age", "3600");
res.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type");
res.setStatus(HttpServletResponse.SC_OK);
return true;
}
}
第二步
配置Webconfig配置类
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private LoginCheckInterceptor loginCheckInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginCheckInterceptor).addPathPatterns("/**") //对所有请求进行拦截
.excludePathPatterns("/Register"); //不拦截注册的请求
}
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedMethods("GET", "POST","option"); // 允许的请求方法
}
}