java处理跨域问题
2020-09-21 本文已影响0人
星钻首席小管家
1.CORSFilter
/**
* 描述:
* 跨域处理,依赖servlet api和spring-web
* @author lcf 2018/4/14
*/
public class CORSFilter extends OncePerRequestFilter {
private final static Logger log = LoggerFactory.getLogger(CORSFilter.class);
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws
ServletException, IOException {
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Headers", "X-Requested-With,X_Requested_With");
if(request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
response.addHeader("Access-Control-Allow-Methods", "HEAD,GET,POST,PUT,DELETE,OPTIONS");
response.addHeader("Access-Control-Allow-Headers", "Content-Type,Origin,Accept");
response.addHeader("Access-Control-Max-Age", "120");
}
filterChain.doFilter(request, response);
}
}
2.FilterConfig
/**
* Filter配置
*
* @author LingDu
* @version 1.0
*/
@Configuration
public class FilterConfig {
//跨域filter
@Bean
public FilterRegistrationBean CORSFilter(){
FilterRegistrationBean registrationBean = new FilterRegistrationBean();
CORSFilter filter = new CORSFilter();
registrationBean.setFilter(filter);
registrationBean.setUrlPatterns(Arrays.asList(new String[]{"/*"}));
return registrationBean;
}
//shiroFilter
@Bean
public FilterRegistrationBean<DelegatingFilterProxy> shiroFilterRegistration() {
FilterRegistrationBean<DelegatingFilterProxy> registration = new FilterRegistrationBean<>();
registration.setFilter(new DelegatingFilterProxy("shiroFilter"));
//该值缺省为false,表示生命周期由SpringApplicationContext管理,设置为true则表示由ServletContainer管理
registration.addInitParameter("targetFilterLifecycle", "true");
registration.setEnabled(true);
registration.setOrder(Integer.MAX_VALUE - 1);
registration.addUrlPatterns("/*");
return registration;
}
}