用于弹簧靴的CORS过滤器不工作

时间:2016-06-20 08:28:01

标签: spring spring-boot cors

我在@Configuration

下添加了以下内容
@Bean
public FilterRegistrationBean corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.addAllowedOrigin("*");
    config.addAllowedHeader("*");
    config.addAllowedMethod("OPTIONS");
    config.addAllowedMethod("HEAD");
    config.addAllowedMethod("GET");
    config.addAllowedMethod("PUT");
    config.addAllowedMethod("POST");
    config.addAllowedMethod("DELETE");
    config.addAllowedMethod("PATCH");
    source.registerCorsConfiguration("/**", config);
    // return new CorsFilter(source);
    final FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
    bean.setOrder(0);
    return bean;
}

以及:

@Bean
    public WebMvcConfigurer mvcConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedMethods("GET", "PUT", "POST", "GET", "OPTIONS");
            }
        };
    }

我没有同时启用它们,

但是当我使用CURL触发CORS预检请求时,我得到以下结果:

 HTTP/1.1 200 OK
< Server: Apache-Coyote/1.1
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Cache-Control: no-cache, no-store, max-age=0, must-revalidate
< Pragma: no-cache
< Expires: 0
< X-Frame-Options: DENY
< Access-Control-Allow-Origin: www.example.com
< Vary: Origin
< Access-Control-Allow-Credentials: true
< Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
< Content-Length: 0
< Date: Mon, 20 Jun 2016 08:26:06 GMT
<
* Connection #6 to host localhost left intact

使用:

curl -H&#34;原产地:www.example.com&#34; \ -H&#34; x-auth-token:93f8ddb4-d2db-4c8f-b30e-a9fb8468437b&#34; -H&#34;访问控制请求方法:POST&#34; \ -H&#34;访问控制 - 请求 - 标题:X-Requested-With&#34; \ -X OPTIONS --verbose \ http://localhost:8181

我觉得理想的输出必须是:

http://learntogoogleit.com/post/61327173902/cors-preflight-request-testing-in-curl

我明白了 使用角客户端不支持CORS预检模型

1 个答案:

答案 0 :(得分:0)

你能尝试@CrossOrigin注释控制器类的顶部吗?