package com.vincent.rsf.server.common.config;
|
|
import com.vincent.rsf.server.common.constant.Constants;
|
import com.vincent.rsf.server.common.utils.Http;
|
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.CorsRegistry;
|
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
|
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 {
|
|
@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 {
|
Http.cors(response);
|
return true;
|
}
|
};
|
}
|
|
@Override
|
public void addCorsMappings(CorsRegistry registry) {
|
registry.addMapping("/**")
|
.allowedOriginPatterns("*")
|
.allowedHeaders("*")
|
.exposedHeaders(Constants.TOKEN_HEADER_NAME)
|
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "PATCH")
|
.allowCredentials(true)
|
.maxAge(3600);
|
}
|
|
|
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", Constants.TOKEN_HEADER_NAME);
|
}
|
|
}
|