[Spring Boot] When allowCredentials is true, allowedOrigins cannot contain the special value "*" 오류

홍영환·2023년 12월 2일
post-thumbnail

📌 상황

Spring 프로젝트를 EC2에 백그라운드로 실행 시킨 후 클라이언트 요청시 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.

위의 오류를 번역을 해보면

"AllowCredentials가 true인 경우 allowedOrigins는 "Access-Control-Allow-Origin" 응답 헤더에 설정할 수 없는 특수 값 "*"를 포함할 수 없습니다. 원본 집합에 자격 증명을 허용하려면 명시적으로 나열하거나 대신 "allowedOriginPatterns" 사용을 고려하세요."

📌 원인

spring에서 cors를 처리해주었는데 이때 .addAllOrigin("*")으로 모든 경로를 열어주었다.
문제는 addAllOrigin.allowCredentials(true)를 같이 사용할 수 없다.

📌 해결방법

addAllOrigin("") 대신 .addAllOriginPatterns("")를 사용

📌 궁금한점

그럼 addAllOrigin("") 과 .addAllOriginPatterns("") 차이점은 뭘까?

간단하게 찾아보니 아래와 같은 다른점이 있었다!

addAllOrigin("*"): 이 메서드는 모든 출처를 허용하는 데 사용됩니다. 즉, 어떤 도메인이든 요청을 보낼 수 있도록 CORS를 허용합니다. 하지만 이는 모든 출처에 대한 접근을 허용하는 것이기 때문에 보안적인 측면에서 권장되지 않을 수 있습니다.
.addAllOriginPatterns("*"): 이 메서드는 와일드카드를 사용하여 출처 패턴을 지정하는 데 사용됩니다. 이것은 addAllOrigin("*")와 다르게, 출처 패턴을 명시적으로 나타내는 것이기 때문에 좀 더 명확한 제어가 가능합니다. 예를 들어, 다른 도메인들 중에서 특정 패턴에 맞는 출처들만을 허용하고자 할 때 유용합니다.

📌 결론

profile
안녕하세요

0개의 댓글