CORS(Cross-Origin Resource Sharing)는 웹 브라우저의 동일 출처 정책(Same-Origin Policy)로 인해 발생하는 제약을 극복하기 위한 메커니즘입니다. 동일 출처 정책은 웹 애플리케이션이 동일한 출처에서만 리소스를 요청하도록 제한하는 보안 정책입니다. 출처는 프로토콜, 호스트, 포트 번호로 구성되며, 출처가 다른 경우에는 브라우저에서 해당 리소스 접근을 차단합니다.
다른 출처에서 리소스 요청을 허용하기 위한 정책을 정의하고, 서버와 클라이언트 간의 상호작용을 가능하게 합니다. 예를 들어, 웹 애플리케이션의 API 서버가 다른 도메인에서 온 요청을 처리해야 할 때 CORS를 사용하여 해당 요청을 허용할 수 있습니다.
경로: /src/main/java/{project}/config
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("http://example.com") // 허용할 도메인 설정
.allowedMethods("GET", "POST", "PUT", "DELETE") // 허용할 HTTP 메소드 설정
.allowedHeaders("Origin", "Content-Type", "Accept") // 허용할 헤더 설정
.allowCredentials(true) // 인증정보 허용 여부
.maxAge(3600); // preflight 요청의 유효시간 설정
}
}
위의 코드에서 allowedOrigins, allowedMethods, allowedHeaders, allowCredentials, maxAge 등의 메소드를 사용하여 CORS 정책을 설정할 수 있습니다.
allowedOrigins
: 허용할 도메인을 설정합니다. 여러 도메인을 허용하려면 쉼표로 구분하여 추가하면 됩니다. *를 사용하면 모든 도메인을 허용합니다.
allowedMethods
: 허용할 HTTP 메소드를 설정합니다.
allowedHeaders
: 허용할 헤더를 설정합니다.
allowCredentials
: 인증정보를 허용할지 여부를 설정합니다.
maxAge
: preflight 요청의 유효시간을 설정합니다.
위의 예시 코드에서는 /**를 사용하여 모든 URL에 대해 CORS 설정을 적용하도록 했습니다. 필요에 따라 특정 URL 패턴에 대해서만 설정할 수도 있습니다.