IT/Java

Spring에서 CORS 설정하기

Dev. Sean 2024. 1. 23. 11:10
반응형

웹 개발의 세계에서 CORS(Cross-Origin Resource Sharing)는 필수적인 개념이다.

다양한 출처에서 오는 요청을 처리해야 하는 현대 웹 애플리케이션에서 CORS 설정은 보안과 자원 공유의 균형을 맞추는 데 중요한 역할을 한다.

이 글에서는 Spring Framework에서 CORS를 설정하는 세 가지 방법을 소개한다.

1. @CrossOrigin 어노테이션 사용

가장 간단하고 직관적인 방법은 @CrossOrigin 어노테이션을 사용하는 것이다.

이 어노테이션을 컨트롤러 클래스나 메소드에 적용할 수 있다.

예를 들어, 특정 출처에서 오는 요청만을 허용하고 싶다면 다음과 같이 설정한다.

@RestController
@RequestMapping("/api")
public class MyController {

    @CrossOrigin(origins = "http://example.com")
    @GetMapping("/items")
    public List<Item> getItems() {
        // ...
    }
}

 

이 코드는 http://example.com에서 오는 GET /api/items 요청만을 허용한다.

 

2. 글로벌 CORS 설정

전체 애플리케이션에 대한 CORS 정책을 설정하고자 한다면 WebMvcConfigurer 인터페이스를 구현하는 것이 좋다. addCorsMappings 메소드를 오버라이드하여 다음과 같이 설정할 수 있다.

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/**")
                .allowedOrigins("http://example.com")
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*")
                .allowCredentials(true);
    }
}

 

이 설정은 /api/** 경로로 들어오는 모든 요청에 대해 지정된 출처, 메소드, 헤더를 허용한다.

3. CorsFilter 사용

보다 세부적인 설정을 원한다면 CorsFilter를 사용하는 방법이 있다.

특히 Spring Security와 함께 사용할 때 유용하다.

CorsFilter를 빈으로 등록하여 다음과 같이 설정할 수 있다.

 

@Bean
public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = new CorsConfiguration();
    config.setAllowCredentials(true);
    config.addAllowedOrigin("http://example.com");
    config.addAllowedHeader("*");
    config.addAllowedMethod("*");
    source.registerCorsConfiguration("/api/**", config);
    return new CorsFilter(source);
}

 

이 설정은 모든 HTTP 메소드와 헤더를 http://example.com 출처로부터 /api/** 경로에 대해 허용한다.

반응형