// 配置到全局
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").
allowedOriginPatterns("*").
allowedMethods("*").
allowedHeaders("*").
allowCredentials(true).
exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L);
}
// 配置过滤掉 OPTION
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(Interceptor());
}
@Bean
public AuthInterceptor Interceptor() {
return new AuthInterceptor();
}
}
public class AuthInterceptor() implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 这个要有
if(request.getMethod().equals(RequestMethod.OPTIONS.name())){
return true;
}
}
...
}
最近看他们一个项目,存在一个跨域的问题;检查代码addCorsMappings配置没毛病,通过页面请求发现 OPTIONS 请求被拦截的导致不能正常提供服务