Java Angular 7和Spring Boot应用程序-No';访问控制允许原点';请求的资源上存在标头

Java Angular 7和Spring Boot应用程序-No';访问控制允许原点';请求的资源上存在标头,java,angular,spring-boot,cors,allowed-origin,Java,Angular,Spring Boot,Cors,Allowed Origin,我已经在Spring Boot应用程序中向我的控制器添加了类级别的@CrossOrigin(origins=“*”)注释,当我从Angular向Spring Boot应用程序发出HTTP GET请求时(在端口9000上侦听),仍然收到此错误。这是我从Chrome得到的错误 CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“访问控制允许源”标头 我发现@CrossOrigin非常挑剔。您可以尝试只使用@CrossOrigin,而不使用建议的任何参数 您还可以尝

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

CORS策略已阻止从源“”访问“”处的XMLHttpRequest:请求的资源上不存在“访问控制允许源”标头


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

您还可以尝试将自定义的
CorsFilter
Bean添加到调用
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);
}

如果更改为just CrossOrigin(),仍然会出现错误吗?是的,谢谢Alexander。现在可以了,谢谢你,马特。它起作用了。