Spring boot 昂首阔步+;弹簧靴=CORS问题?

Spring boot 昂首阔步+;弹簧靴=CORS问题?,spring-boot,swagger,swagger-ui,Spring Boot,Swagger,Swagger Ui,我正试着在我的项目中树立一种昂首阔步的姿态 我有以下的招摇过市配置类: @EnableSwagger @Configuration @ComponentScan(basePackages = {"my.package"}) public class SwaggerConfig extends WebMvcConfigurerAdapter { @Override public void addResourceHandlers(ResourceHandlerRegistry re

我正试着在我的项目中树立一种昂首阔步的姿态

我有以下的招摇过市配置类:

@EnableSwagger
@Configuration
@ComponentScan(basePackages = {"my.package"})
public class SwaggerConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler(
                SwaggerSpringMvcUi.WEB_JAR_RESOURCE_PATTERNS)
                .addResourceLocations(
                        SwaggerSpringMvcUi.WEB_JAR_RESOURCE_LOCATION)
                .setCachePeriod(0);
    }

    @Bean
    public InternalResourceViewResolver getInternalResourceViewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix(SwaggerSpringMvcUi.WEB_JAR_VIEW_RESOLVER_PREFIX);
        resolver.setSuffix(SwaggerSpringMvcUi.WEB_JAR_VIEW_RESOLVER_SUFFIX);
        return resolver;
    }

    @Override
    public void configureDefaultServletHandling(
            DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

}
不幸的是,我越来越无法从服务器读取。它可能没有适当的访问控制原点设置。

因此,在快速研究之后,我发现我需要添加CORSFilter来克服这一问题:

@Component
public class SimpleCORSFilter implements Filter {

    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
        chain.doFilter(req, res);
    }

    public void init(FilterConfig filterConfig) {}

    public void destroy() {}

}
我检查了CURL-header是否正确修改,但Swagger仍然不起作用(与前面的错误消息相同)


有什么想法吗?

请看最新版本的Spring Boot 1.3.M1:

最近发布的SpringFramework4.2RC1为CORS提供了开箱即用的一流支持,为您提供了一种比典型的基于过滤器的解决方案更简单、更强大的配置方式


。。。更多信息:

使用curl测试哪个URL?您是否尝试过在修改标题后清除浏览器的缓存?你没有任何
PUT
操作吗?我找到了一个解决方案-结果是,我的gradle构建中缺少以下条目:runtime'org.apache.tomcat.embed:tomcat-embed-jasper'你可能想为未来的用户提供这个问题的正式答案并接受它。