package com.zy.acs.hex.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.AsyncHandlerInterceptor; 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 javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * WebMvc配置, 拦截器、资源映射等都在此配置 * * @author vincent * @since 2019-06-12 10:11:16 */ @Configuration public class WebMvcConfig implements WebMvcConfigurer { /** * token通过header传递的名称 */ public static final String TOKEN_HEADER_NAME = "Authorization"; @Override public void addInterceptors(InterceptorRegistry registry) { registry.addInterceptor(getAsyncHandlerInterceptor()) .addPathPatterns("/**") ; } @Bean public AsyncHandlerInterceptor getAsyncHandlerInterceptor() { return new AsyncHandlerInterceptor() { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { cors(response); return true; } }; } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 配置静态资源处理器 registry.addResourceHandler("/static/**") .addResourceLocations("classpath:/static/") .addResourceLocations("/static/"); // 配置视图文件处理器 registry.addResourceHandler("/views/**") .addResourceLocations("/views/"); } public static void cors(HttpServletResponse response) { // 跨域设置 response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "*"); response.setHeader("Access-Control-Allow-Headers", "*"); response.setHeader("Access-Control-Expose-Headers", TOKEN_HEADER_NAME); } }