개요
CORS 필터를 분명 적용했는데, CORS에러가 발생해서 디버깅을 해봤더니 다음과 같은 에러가 발생했다.
When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.
해결
스프링부트 2.4.0부터 allowCredentials가 true일 때 allowedOrigins에 특수 값인 "*" 추가할 수 없게 되었다. 대신 allowOriginPatterns를 사용해야 한다. 에러 메시지 그대로 수정하면 해결되는 간단한 문제였다.
실무에선 아래와 같이 단순하게 모두 허용하는 대신, 정해진 Rule에 따라 Header, Method, Pattern 등을 정해야 한다.
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
// config.addAllowedOrigin("*");
config.addAllowedOriginPattern("*"); // addAllowedOriginPattern("*") 대신 사용
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
'트러블슈팅' 카테고리의 다른 글
[트러블슈팅] JPA에서 default_batch_fetch_size 또는 @BatchSize 사용 시 LazyInitializationException이 발생하는 문제 (0) | 2022.10.05 |
---|---|
[트러블슈팅] 테스트 코드에서 @Slf4j cannot find symbol 에러 (0) | 2022.08.15 |
[트러블슈팅] IntelliJ Build Error: java.lang.AbstractMethodError (0) | 2022.07.15 |
[트러블슈팅] 카카오맵 401 Unauthorized 에러 (kakao is not defined) (2) | 2021.10.05 |
[트러블슈팅] MySQL FULLTEXT 특정 문자 검색 안될 때 (0) | 2021.08.06 |