Spring boot CORS 설정(외부접속 허용)
Posted by Albert 902Day 16Hour 32Min 58Sec ago [2022-10-30]
Res api 만든 후 타 도메인에서 관련 restapi 항목을 바로 사용하면 cors 애러가 뜬다 이때 자주 사용되는 방법 3개 메모해놓는다
1. Controller 혹은 mapping method 위 에 관련 annotation 추가하여 외부 access 허용 가능함
@RestController
@CrossOrigin(origins = "http://www.visionboy.me", allowedHeaders = "*")
2. Configuration 을 통하여 허용
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "POST")
.maxAge(3000);
}
}
3. Spring Security 상 설정
SecurityConfig 상 아래와 같이 설정 하면 된다.
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
return http
.csrf().disable()
.cors().configurationSource(corsConfigurationSource())
.and()
.authorizeRequests()
.antMatchers("/admin/**").hasAuthority("ADMIN")
.antMatchers("/**").permitAll()
.and()
.formLogin()
.loginPage("/loginPage")
.loginProcessingUrl("/login")
.defaultSuccessUrl("/")
.permitAll()
.and()
.logout()
.logoutUrl("/logout")
.logoutSuccessUrl("/").and().build();
}
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.addAllowedOrigin("https://visionboy.me");
configuration.addAllowedOrigin("https://www.visionboy.me");
configuration.addAllowedOrigin("http://visionboy.me");
configuration.addAllowedOrigin("http://www.visionboy.me");
configuration.addAllowedOrigin("http://localhost:8081");
configuration.addAllowedHeader("*");
configuration.addAllowedMethod("*");
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}