Почему мое приложение Spring Boot работает в одной среде, но выдает ошибку CORS в другой?

В приложении Spring Boot все контроллеры снабжены аннотацией перекрестного происхождения, то есть @CrossOrigin("*"). В WebSecurityConfigurerAdapter проблему должен был решить следующий код:

@EnableWebSecurity
public class WebSecurity extends WebSecurityConfigurerAdapter {
    
    protected void configure(HttpSecurity http) throws Exception {
        http
            .cors()
                .and()
            .csrf().disable()
            .authorizeRequests()
                .antMatchers(HttpMethod.POST, Constants.SIGN_UP_URL).permitAll()
                .antMatchers(HttpMethod.GET, Constants.DOWNLOAD_IMAGE_URL).permitAll()
                .antMatchers(HttpMethod.GET, Constants.CUSTOMER_APP).permitAll()
                ...
                .anyRequest().authenticated()
                .and()
            .addFilter(new JWTAuthenticationFilter(authenticationManager()))
            .addFilter(new JWTAuthorizationFilter(authenticationManager()))
                // this disables session creation on Spring Security
            .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }
    
    @Bean
    public CorsConfigurationSource corsConfigurationSource() {
        final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", new CorsConfiguration().applyPermitDefaultValues());
        return source;
    }
    
}

Это работает в одной среде, но в другой дает ошибку CORS, например:

Access to XMLHttpRequest at 'https://tracerpro.com:9091/api/v1/ethix/saveScreenAttibDetails' from origin 'https://tracerpro.com:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Access to XMLHttpRequest at from origin has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Я что-то пропустил?

Обновлять: Основное различие между двумя средами - это обратный прокси nginx. В среде, где он не работает, есть обратный прокси, где он работает, это просто http. Где это не работает, так это обратный прокси.

Это опечатка или во втором сообщении об ошибке действительно отсутствуют URL-адреса?

dur 31.03.2021 21:52

@dur, tracerpro - это не полный URL-адрес, так как я не хочу раскрывать реальный URL-адрес. Однако конечная точка вызывается из приложения Angular, доступного по адресу example.com:4200.

Subhendu Mahanta 01.04.2021 12:49

Нет, я имел ввиду второй URL: Access to XMLHttpRequest at from origin has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Его там нет.

dur 01.04.2021 12:53

@dur похоже, что мне нужно что-то сделать в конфигурации nginx, чтобы разрешить CORS. Однако в приложении так много конечных точек - только эта конечная точка создает проблемы.

Subhendu Mahanta 03.04.2021 06:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
4
34
0

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