Конфигурация Spring Boot cors позволяет использовать все источники

Я пытаюсь сделать свой интерфейс единственным местом от запроса до бэкэнда. Проблема в том, что он не работает, и каждый запрос вызывается. Ниже приведен код, который настраивает Spring Security и cors.

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and().csrf().disable().authorizeRequests()
                .antMatchers(HttpMethod.POST, SIGN_UP_URL).permitAll()
                .antMatchers(HttpMethod.GET, "/groups").permitAll()
                .antMatchers("/").permitAll()
                .anyRequest().authenticated()
                .and()
                .addFilter(new JWTAuthenticationFilter(authenticationManager()))
                .addFilter(new JWTAuthorizationFilter(authenticationManager()))
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }

@Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.setAllowedOrigins(Arrays.asList("http://192.168.0.16:8080"));
        configuration.setAllowedMethods(Arrays.asList("GET", "POST"));
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

Хотя это возможно, я бы рекомендовал развернуть ваше внешнее приложение на том же хосте, что и ваш серверный. Это НЕ требует включения CORS на серверной части, и вы можете фактически отключить совместное использование ресурсов между источниками, как вы указали в вопросе, что хотите ОСТАНОВИТЬ ДРУГИЕ, кроме внешнего интерфейса. Это не будет делать никаких предварительных запросов (т.е. OPTIONS).

miiiii 11.03.2019 16:35
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
57
1

Ответы 1

Возможно, вы захотите добавить OPTIONS метод http к CORS разрешенным методам. Большинство интерфейсных языков отправляли запрос OPTIONS перед отправкой настоящего. Что-то типа

configuration.setAllowedMethods(Arrays.asList("GET", "POST", "OPTIONS"));

Другие вопросы по теме