Включение Spring Security Cors - PullRequest
2 голосов
/ 19 сентября 2019

Я пытался добавить простую CorsRegistry в приложение SpringBoot.Я следовал за ответом Кинжал Гилберта Аренаса в вопросе Spring Boot Security CORS , используя Вариант 1. Тем не менее, я по-прежнему генерирую ошибку CORS при попытке добраться до моего сервера с помощьюReact.С помощью Postman все работает так, как задумано, поэтому я знаю, что в моей конфигурации должны быть какие-то ошибки, я просто не могу ее найти.

Мой файл настроек безопасности:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http    .cors().and().csrf().disable()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                .addFilter(new JwtAuthenticationFilter(authenticationManager()))
                .addFilter(new JwtAuthorizationFilter(authenticationManager(),  this.userRepository))
                .authorizeRequests()
                .antMatchers(HttpMethod.POST, "/login").permitAll()
                .antMatchers("/iotd").hasRole("USER")
                .anyRequest().authenticated();
    }
}

Мой файл CorsConfig

@Configuration
public class CorsConfig {

    private static final Logger logger = LoggerFactory.getLogger(CorsConfig.class);

    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                logger.info("CORS implemented");
                registry.addMapping("/**")
                        .allowedMethods("GET", "POST")
                        .allowedHeaders("*")
                        .allowedOrigins("*");
            }
        };
    }
}

После запуска запускается регистратор, который сообщает, что реестр CORS реализован.

Затем я выбрал второй вариант из его ответа, используя CorsConfigurationBean,но проблема сохраняется.

Я применил метод Filter, но даже при применении фильтра перед остальными настройками безопасности проблема сохранялась.

1 Ответ

1 голос
/ 20 сентября 2019

Добавить OPTIONS метод в allowMethods , который отправляется браузером в целях безопасности.

Этот запрос перед полетом выполняется некоторыми браузерами в качестве меры безопасности, чтобы гарантировать, что запросвыполняется доверенным сервером.Это означает, что сервер понимает, что метод, источник и заголовки, отправляемые по запросу, безопасны для действий.

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