도메인이 다른 서버끼리 리소스를 주고 받을 때 보안을 위해 설정된 정책인 CORS(Cross-Origin Resource Sharing)
CORS는 웹 브라우저가 하나의 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 자원에 접근할 수 있는 권한을 부여하도록 하는 메커니즘이다. 웹 사이트가 다른 도메인에서 리소스를 요청할 때 보안을 유지하면서 접근할 수 있도록 도와준다.
예를들어 웹 사이트 A가 API 서버 B에서 데이터를 가져오려 할 때, API 서버 B에서 CORS 허용 설정이 되어 있지 않으면 웹 브라우저에서 API 접근이 거부될 수 있다. 이는 보안을 위해 웹 브라우저에서 자동으로 차단하는 것.
ex) React 서버(3000 포트) → Springboot 서버(8080 포트) 리소스를 주고받으려 할 때 CORS 위반 에러가 발생.
CORS를 이해하려면 우선 "출처"에 대해 알아야 한다.
서버에서 CORS를 허용하려면 몇 가지 설정이 필요하다.
예를 들어, Springboot 서버에서는 다음과 같이 설정할 수 있다.
import org.springframework.context.annotation.Bean;
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://localhost:3000")
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("content-type", "authorization", "x-requested-with")
.allowCredentials(true);
}
}