Настройка cors в приложении весенней загрузки.Бин CorsConfigurationSource не работает - PullRequest
0 голосов
/ 03 апреля 2019

Так что я не могу настроить Cors. Мое угловое приложение не может отправить запрос API из-за ошибки. Я могу делать запросы по soapUI, и они работают нормально. Но из браузера есть:

Доступ к XMLHttpRequest в «http://localhost:8080/backend/api/public' от источника» http://localhost:4200' заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Я искал ответы, и они выглядели как мой класс.

Я использую весеннюю загрузку веб-безопасности.

@EnableWebSecurity
@Configuration
public class AuthConfig extends WebSecurityConfigurerAdapter {

    @Value(value = "${auth0.apiAudience}")
    private String apiAudience;
    @Value(value = "${auth0.issuer}")
    private String issuer;


    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("http://localhost:4200"));
        configuration.setAllowedMethods(Arrays.asList("GET","POST"));
        configuration.setAllowCredentials(true);
        configuration.addAllowedHeader("Authorization");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",configuration);
        return source;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        JwtWebSecurityConfigurer
                .forRS256(apiAudience, issuer)
                .configure(http)
                .authorizeRequests()
                .antMatchers(HttpMethod.GET,"/api/public").permitAll()
                .antMatchers(HttpMethod.GET, "/api/private").authenticated()
                .antMatchers(HttpMethod.GET, "/api/private-scoped").hasAnyAuthority("read:posts");
    }
}

Этот бин должен добавить этот заголовок cors, но это не так. Может быть, вы знаете какую-нибудь лучшую идею сделать это? В чем разница между WebSecurityConfigurerAdapter и WebMvcConfigurerAdapter?

1 Ответ

1 голос
/ 03 апреля 2019

Согласно этому вы должны добавить .cors().and() в свой configure() метод.

Существуют и другие возможные решения, например, путем настройки конфигурации CORS, специфичной для каждой конечной точки, как показано здесь .

Если вы хотите включить CORS для всего приложения, первый способ намного красивее.

Разница между WebSecurityConfigurerAdapter и WebMvcConfigurerAdapter заключается в том, что WebSecurityConfigurerAdapter используется для настройки всего, что связано с безопасностью вашего веб-приложения, например проверки подлинности и авторизации. С помощью WebMvcConfigurerAdapter вы можете настроить конфигурацию на основе Java для Spring MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...