首页 > 解决方案 > Angular 7 和 Spring Boot 应用程序 - 请求的资源上不存在“Access-Control-Allow-Origin”标头

问题描述

我在 Spring Boot 应用程序的控制器中添加@CrossOrigin(origins = "*")了类级别的注释,当我从 Angular 向 Spring Boot 应用程序发出 HTTP GET 请求(侦听端口 9000)时,我仍然收到此错误。这是我从 Chrome 得到的错误。

从源“ http://localhost:4200 ”访问“ http://localhost:9000/employee/all ”处的 XMLHttpRequest已被 CORS 策略阻止:没有“Access-Control-Allow-Origin”标头出现在请求的资源。

标签: javaangularspring-bootcorsallowed-origin

解决方案


我发现@CrossOrigin非常挑剔。您可以尝试按照Alexander的建议@CrossOrigin不使用任何参数。

您还可以尝试将自定义CorsFilterBean 添加到您调用的类中SpringApplication.run()。这样,您基本上可以完全控制过滤器,并且可以在必要时添加/删除方法。

像这样的东西:

@Bean
public CorsFilter corsFilter() {
    final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

    final CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.setAllowedOrigins(Collections.singletonList("*"));
    config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept"));
    config.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));

    source.registerCorsConfiguration("/**", config);
    return new CorsFilter(source);
}

推荐阅读