모든 URL 에 시큐리티로 제한 → 따라서 시큐리티가 필요하지 않는 부분은 열어줘야함.
config/WebConfig.java
@Override
public void addCorsMappings(CorsRegistry registry) {
registry
.addMapping("/**")
.allowedOrigins(
this.security
.getCors()
.getOrigin()
)
.allowedMethods("*");
}
cors:
origin:
- <http://localhost:3000>
- <http://127.0.0.1:3000>
- <https://monthsub.netlify.app>
allows:
- /assets/**
- /h2-console/**
- /v3/api-docs/**
- /swagger-monthsub.html
- /swagger-ui/**
# endpoint
- /health
- /users/login
- /users/signup
- /series/sort
- /series/{id}
허용 도메인과 허용 엔드포인트 열어줘야함.
이렇게 하면 될까?
인증이 필요하지 않은 API들은 정상적으로 작동한다.
프론트에서 POST 요청을 보내지만 콜스에러로 인해 OPTIONS로 들어온다.
CloudWatchLog를 확인해본다.
<aside> 💙 해결 방법
</aside>
SecurityConfig.java에서도 cors 처리를 해줘야 한다.
.cors()
.configurationSource(corsConfigurationSource())
@Bean
public CorsConfigurationSource corsConfigurationSource() {
CorsConfiguration configuration = new CorsConfiguration();
Arrays.stream(this.security.getCors()
.getOrigin())
.toList()
.forEach(configuration::addAllowedOrigin);
configuration.addAllowedHeader("*");
configuration.addAllowedMethod("*");
configuration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", configuration);
return source;
}