package com.zy.common.config; //import com.zy.common.constant.MesConstant; //import com.zy.common.route.RouteFilter; //import com.zy.common.utils.Http; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; import org.springframework.web.servlet.AsyncHandlerInterceptor; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Created by vincent on 2019-06-13 */ @Configuration public class WebConfig implements WebMvcConfigurer { @Autowired private AdminInterceptor adminInterceptor; @Override public void addInterceptors(InterceptorRegistry registry) { // registry.addInterceptor(new RouteFilter()) // .addPathPatterns("/api/robot") // 拦截路径 // .excludePathPatterns("/static/**"); // 排除静态资源 registry.addInterceptor(adminInterceptor) .addPathPatterns("/**") ; } // @Bean // public RequestMappingHandlerMapping requestMappingHandlerMapping() { // RequestMappingHandlerMapping handlerMapping = new CustomRequestMappingHandlerMapping(); // handlerMapping.setOrder(0); // handlerMapping.setInterceptors(new RouteFilter()); // return handlerMapping; // } @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") // 使用 allowedOriginPatterns 而不是 allowedOrigins .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") .allowedHeaders("*") .allowCredentials(true) .maxAge(3600); } /** * 方式二:使用 Filter(更全面,优先级更高) */ @Bean public FilterRegistrationBean corsFilter() { CorsConfiguration config = new CorsConfiguration(); // 允许所有域名 config.addAllowedOrigin("*"); // 允许任何头 config.addAllowedHeader("*"); // 允许任何方法(GET, POST, PUT, DELETE, OPTIONS等) config.addAllowedMethod("*"); // 允许凭证(如果需要cookie等凭证,设置为true,但需要指定具体域名) config.setAllowCredentials(false); // 预检请求的有效期,单位为秒 config.setMaxAge(3600L); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); FilterRegistrationBean bean = new FilterRegistrationBean<>(new CorsFilter(source)); // 设置优先级最高 bean.setOrder(Ordered.HIGHEST_PRECEDENCE); return bean; } }