//跨域问题解决
@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("*");
}
};
}
}