У меня есть следующие конфиги:
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*"));
configuration.setAllowedMethods(Arrays.asList("GET","POST","HEAD","DELETE","PUT"));
configuration.setMaxAge(1l);
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}
и настройки безопасности:
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.cors()
.and()
.csrf()
.disable()
.exceptionHandling()
.authenticationEntryPoint(unauthorizedHandler)
.and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and().authorizeRequests()
.antMatchers(
"/auth/**"
).permitAll()
.antMatchers(HttpMethod.OPTIONS, "/**").permitAll()
.anyRequest().authenticated()
;
}
, но этот микс не работает.Если я удаляю блок CorsConfigurationSource corsConfigurationSource()
и добавляю @CrossOrigin(origins = "*", maxAge = 1)
проблемы с ядрами, то проблемы исчезнут!
, но я хочу зарегистрировать cors глобально, в чем проблема?
Я использую весеннюю загрузку версии 2, сSpring Security и некоторые остальные контроллеры.
(maxAge = 1) добавлено из-за кэширования в браузере, которое тратит много моего времени!
(если случайно браузер пропускает предполётный шаг, почему серверне проверяет источник в реальном вызове? который должен проверяться на сервере или в клиенте браузером?)