Я пытаюсь сделать свой интерфейс единственным местом от запроса до бэкэнда. Проблема в том, что он не работает, и каждый запрос вызывается. Ниже приведен код, который настраивает 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;
}




Возможно, вы захотите добавить OPTIONS метод http к CORS разрешенным методам. Большинство интерфейсных языков отправляли запрос OPTIONS перед отправкой настоящего. Что-то типа
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "OPTIONS"));
Хотя это возможно, я бы рекомендовал развернуть ваше внешнее приложение на том же хосте, что и ваш серверный. Это НЕ требует включения CORS на серверной части, и вы можете фактически отключить совместное использование ресурсов между источниками, как вы указали в вопросе, что хотите ОСТАНОВИТЬ ДРУГИЕ, кроме внешнего интерфейса. Это не будет делать никаких предварительных запросов (т.е. OPTIONS).