//跨域问题解决
    @Bean
    public FilterRegistrationBean crossFilterRegistration() {
        final FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        //设置拦截那些URL
        registrationBean.addUrlPatterns("/api/*");
        registrationBean.addInitParameter("cors.allowed.headers","DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,Accept,Access-Control-Request-Method,Access-Control-Request-Headers");
        registrationBean.addInitParameter("cors.allowed.origins","*");
        registrationBean.addInitParameter("cors.allowed.methods","POST, GET, OPTIONS, PUT, DELETE, HEAD");
        registrationBean.addInitParameter("cors.preflight.maxage","18000");
        registrationBean.addInitParameter("cors.qr.decorate","true");
        registrationBean.addInitParameter("cors.supports.credentials","true");
        //是否启用,如果false,则不启动Filter
        registrationBean.setEnabled(true);
        //设置执行顺序,值越小,越先执行
        registrationBean.setOrder(1);
        //注册Filter
        registrationBean.setFilter(myFilter());
//        registrationBean.setFilter(corsFilter());
        return registrationBean;
    }
    /**@Bean
    public CorsFilter corsFilter(){
        return new CorsFilter();
    }**/
  
 //跨域问题解决
    @Bean
    public MyFilter myFilter(){
        return new MyFilter();
    }
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
 *  跨域问题
 */
public class MyFilter implements Filter {
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;
        HttpServletResponse httpResponse = (HttpServletResponse) response;
        httpResponse.setHeader("Access-Control-Allow-Origin", httpRequest.getHeader("Origin"));
        httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        httpResponse.setHeader("Access-Control-Max-Age", "0");
        httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token,Access-Control-Allow-Headers , token, sid");
        httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
        httpResponse.setHeader("XDomainRequestAllowed", "1");
        chain.doFilter(request, response);
    }
}
/**
 * 跨域问题
 */
@Configuration
public class CorsConfiguration {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowCredentials(false)
                        .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                        .allowedOrigins("*");
            }
        };
    }
}