Разрешено Origin не работает в случае установки динамического c String массива - PullRequest
0 голосов
/ 20 марта 2020

Я использую приложение весенней загрузки и включаю CORS, используя corsfilter.

, поэтому, когда я передаю значение stati c для alloworigin, оно работает, но когда я помещаю массив в него, он не работает.

найдите мой код ниже, который не работает:

final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.setAllowedOrigins(dbProperties.getAllowedDomains());
        config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept"));
        config.setAllowedMethods(Arrays.asList("GET", "POST"));
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);

dbProperties.getAllowedDomains () верните список

и найдите код, который работает:

final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        final CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.setAllowedOrigins(Arrays.asList("http://192.168.1.14:8080"));
        config.setAllowedHeaders(Arrays.asList("Origin", "Content-Type", "Accept"));
        config.setAllowedMethods(Arrays.asList("GET", "POST"));
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);

Свойства класс ниже:

@Component
@ConfigurationProperties
public class MyProperties {
@Value("${alloweddomains}")
private List<String> alloweddomains;

private boolean enableMobileNotification;

public List<String> getAllowedDomains() {
    return alloweddomains;
}

public void setAllowedDomains(List<String> alloweddomains) {
    this.alloweddomains = alloweddomains;
}

}

Applicationtest.properties

alloweddomains="http://192.168.1.14:8085","http://192.168.1.15:8084"

1 Ответ

0 голосов
/ 20 марта 2020

У вас есть небольшая ошибка, вам не нужно @Value, так как вы используете @ConfigurationProperties, я также рекомендую добавить префикс к свойствам.

РЕДАКТИРОВАТЬ

Используйте camelCase для имени переменной вместо alloweddomains, измените его на allowedDomains и в свойствах используйте my-app.allowed-domains вместо my-app.alloweddomains.

@Component
@ConfigurationProperties("my-app")
public class MyProperties {
   private List<String> allowedDomains;

   private boolean enableMobileNotification;

   public List<String> getAllowedDomains() {
      return allowedDomains;
   }

   public void setAllowedDomains(List<String> allowedDomains) {
      this.allowedDomains = allowedDomains;
   }

}
my-app.allowed-domains=http://192.168.1.14:8085, http://192.168.1.15:8084

Это должно исправить.

Рабочий пример: https://github.com/marcosbarbero/so-configuration-properties

...