0

我有一个运行良好的全局 CORS 配置:

@Component
public class CorsConfiguration implements WebMvcConfigurer {
    String allowedOrigins = "*";

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

    public String getAllowedOrigins() {
        return allowedOrigins;
    }

    public void setAllowedOrigins(String allowedOrigins) {
        this.allowedOrigins = allowedOrigins;
    }
}

现在我想allowsOrigins通过application.yaml. 我试图添加@ConfigurationPropierties(prefix="cors")CorsConfiguration类。并添加cors.allowedOrigins=testapplication.yaml. 但这无济于事。我已经阅读了很多帖子和教程,但我不明白为什么这不起作用。应该就这么简单。我错过了什么?

编辑我也尝试过@Value这样的注释

@Value("${cors.allowedOrigins:*}")
String allowedOrigins;

应用程序.yaml

cors:
  allowedOrigins=http://localhost:4200

结果是我只得到默认值*,没有读取任何内容application.yaml

谢谢

4

2 回答 2

0

我认为您应该在 CorsConfiguration 上添加以下注释:

@EnableWebMvc
@Configuration
@ComponentScan(basePackages = { "<packge name>" })

最后一个不是必需的,但有时你需要它

于 2020-11-11T09:15:30.507 回答
0

尝试使用@Value注释来获取您的属性值,application.yml如下所示:

应用程序.yml

origin:
  allowedOrigins: [HOST_HERE]

然后在您的CorsConfiguration类中使用它:

@Component
public class CorsConfiguration implements WebMvcConfigurer {

  @Value("${origin.allowedOrigins:DEFAULT_VALUE_HERE}")
  private String allowedOrigins;

  @Override
  public void addCorsMappings(CorsRegistry registry) {
      registry.addMapping("/**")
            .allowedOrigins(allowedOrigins)
  }
  // code here
}
于 2020-11-10T14:39:59.350 回答