在Spring应用程序中设置CORS过滤器的顺序

时间:2018-02-03 20:08:52

标签: java spring spring-mvc tomcat spring-security-oauth2

我使用Spring(我没有使用Spring启动)和Spring安全OAuth2开发RESTful应用程序以实现端点安全性。 为了在Web浏览器中允许CORS请求,我在我的AbstractAnnotationConfigDispatcherServletInitializer onStartup方法中为我的oauth端点添加了一个CORS过滤器,如下所示:

@Override
    public void onStartup(ServletContext servletContext) throws ServletException {
        servletContext.addFilter("simpleCorsFilter",new CORSFilter()).addMappingForUrlPatterns(null,false,"/oauth/token");
        super.onStartup(servletContext);
    }

以及WebMvcConfigurer中的其他端点:

@ComponentScan("com.my.package")
@EnableWebMvc
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
    }

}

我的CORSFilter的来源可以找到here

这些解决方案正在发挥作用,至少不像我预期的那样完整。过滤器有时在Tomcat上进行部署,有时则不行。 我相信它是因为Tomcat上的过滤器顺序。

我在SO上已经阅读了很多类似的问题,其中大多数都是建议我没有使用的Spring启动解决方案。我也尝试过使用Tomcat的corsfilter,但这对我也不起作用。

有时我必须重启我的Tomcat超过10次才能使所有内容按预期工作。

0 个答案:

没有答案