관리 메뉴

제뉴어리의 모든것

java.lang.IllegalArgumentException: 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 expl.. 본문

에러

java.lang.IllegalArgumentException: 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 expl..

제뉴어리맨 2022. 10. 31. 02:56

상황

 

EC2에 배포된 백엔드 서버에

클라이언트가 요청을 하였을때 발생하는 에러


에러 메세지

java.lang.IllegalArgumentException: 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.

 


원인

Spring Security의 CORS 설정이 잘못 되어 있었다.

Security에서 CORS 설정시

.addAllOrigin("*")  .allowCrededentials(true) 를 같이 쓸 수 없다.

allowCredential 이 true 라면 “Access-Control-Allow-Origin” 응답 헤더헤더를 설정 할 수 없기 때문에 특수 값인 "*"를 사용 못하는 것...


해결 방법

해결방법은 특정 주소만 허락하거나, addAllOrigin("*") 대신 .addAllOriginPatterns("*")를 사용

 

아래는 Spring Security의 Cors 설정을 해주는 객체의 설정 내용이다.

해당 메소드에서 리턴하는 CorsConfigurationSource를 SecurityBuilder에 apply() 메소드로 등록하면 된다.

  CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
//        configuration.setAllowedOrigins(Arrays.asList(clientUrl));
//        configuration.setAllowedMethods(Arrays.asList("*"));

        configuration.addAllowedOriginPattern("*");
        configuration.addAllowedHeader("*");
        configuration.addAllowedMethod("*");
        configuration.setAllowCredentials(true);

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

 

 

 


결론

CORS 어렵다.


참조

https://gowoonsori.com/error/springsecurity-cors/