在Spring辅助Servlet中启用CORS

在Spring辅助Servlet中启用CORS,spring,cors,Spring,Cors,我正在使用Spring boot的ServletRegistrationBean注册一个辅助servlet @Configuration public class CxfServletRegister { @Bean public ServletRegistrationBean getODataServletRegistrationBean() { ServletRegistrationBean odataServletRegistrationBean = new ServletR

我正在使用Spring boot的ServletRegistrationBean注册一个辅助servlet

@Configuration
public class CxfServletRegister {   
@Bean
public ServletRegistrationBean getODataServletRegistrationBean() {
    ServletRegistrationBean odataServletRegistrationBean = new ServletRegistrationBean(new CXFNonSpringJaxrsServlet(), "/odata.svc/*");
    Map<String, String> initParameters = new HashMap<String, String>();
    initParameters.put("javax.ws.rs.Application", "org.apache.olingo.odata2.core.rest.app.ODataApplication");
    initParameters.put("org.apache.olingo.odata2.service.factory", "com.cce.utils.JPAServiceFactory");
    odataServletRegistrationBean.setInitParameters(initParameters);
    return odataServletRegistrationBean;
}
}

这不起作用,可能是因为这是配置SpringWeb的默认DispatcherServlet,而不是使用ServletRegistrationBean配置的附加servlet。我在这里找到了一种可能的方法:
@Configuration
public class CxfServletRegister {   
@Bean
public ServletRegistrationBean getODataServletRegistrationBean() {
    ServletRegistrationBean odataServletRegistrationBean = new ServletRegistrationBean(new CXFNonSpringJaxrsServlet(), "/odata.svc/*");
    Map<String, String> initParameters = new HashMap<String, String>();
    initParameters.put("javax.ws.rs.Application", "org.apache.olingo.odata2.core.rest.app.ODataApplication");
    initParameters.put("org.apache.olingo.odata2.service.factory", "com.cce.utils.JPAServiceFactory");
    odataServletRegistrationBean.setInitParameters(initParameters);
    return odataServletRegistrationBean;
}
}

@配置
公共类MyConfiguration{
@豆子
公共过滤器注册Bean公司过滤器(){
UrlBasedCorsConfigurationSource=新的UrlBasedCorsConfigurationSource();
CorsConfiguration配置=新的CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedOrigin(“http://domain1.com");
config.addAllowedHeader(“*”);
config.addAllowedMethod(“*”);
source.registerCorsConfiguration(“/**”,config);
FilterRegistrationBean=新的FilterRegistrationBean(新的公司过滤器(源));
设置顺序(0);
返回豆;
}
}

这很有效!确切的代码是:FilterRegistrationBean=newfilterregistrationbean(newcorsfilter(source),servletRegistrationBean)//servletRegistrationBean在其中注册了我想要的servlet