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