[Spring Boot] CORS 세팅하기

lovjgb·2024년 8월 13일

자바 스프링 부트에서 CORS 를 세팅해보습니다.
전체코드는 아래와 같습니다.

package com.example.haruplay.global.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("/**") // 요청 URL에 대해 CORS 설정이 적용
                .allowedOrigins("http://localhost:3000") // CORS 요청을 허용할 출처(origin)를 지정
                .allowedMethods("GET", "POST", "PUT", "DELETE")
                .allowedHeaders("*");
    }
}

예제코드

  • CorsRegistry를 사용하여 CORS 정책을 설정합니다.
@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
            .allowedOrigins("http://localhost:3000")
            .allowedMethods("GET", "POST", "PUT", "DELETE")
            .allowedHeaders("*")
            .allowCredentials(true);
}

아래부터 코드 상세 설명

1. registry.addMapping("/**")

  • `addMapping("/")`**: CORS 정책을 적용할 URL 경로를 지정
    • /** : 모든 경로
    • /api/** : /api/로 시작하는 모든 요청에 대해 CORS 설정 적용.

2. allowedOrigins("http://localhost:3000")

  • allowedOrigins("http://localhost:3000"): CORS 요청을 허용할 출처(origin)를 지정
    • 여러 출처를 허용 가능
      .allowedOrigins("http://localhost:3000", "http://example.com")

3. allowedMethods("GET", "POST", "PUT", "DELETE")

  • allowedMethods("GET", "POST", "PUT", "DELETE"): 허용할 HTTP 메서드 지정.
    • 이 경우 GET, POST, PUT, DELETE 메서드에 대해 CORS 요청 허용, 배열로 나열 가능,
    • * : 모든 메서드 허용

4. allowedHeaders("*")

  • allowedHeaders("*"): 허용할 HTTP 헤더를 지정
    • * : 모든 헤더
    • 특정 헤더만 허용하려면, 쉼표로 나열 가능(아래참고)
      .allowedHeaders("Authorization", "Content-Type")

5. allowCredentials(true)

  • allowCredentials(true): 클라이언트가 쿠키 및 인증 정보를 서버에 보낼 수 있도록 허용한다.
    이 옵션을 활성화하면 allowedOrigins에 지정된 출처에서만 요청할 수 있다.
    • 기본적으로 false로 설정되어 있으며, true로 설정하면 쿠키와 인증 정보가 포함된 요청이 허용된다.

전체 코드의 설명

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")                           // 모든 URL 경로에 대해 CORS 설정 적용
            .allowedOrigins("http://localhost:3000")    // http://localhost:3000 출처에서 오는 요청만 허용
            .allowedMethods("GET", "POST", "PUT", "DELETE") // GET, POST, PUT, DELETE 메서드만 허용
            .allowedHeaders("*")                        // 모든 HTTP 헤더 허용
            .allowCredentials(true);                    // 쿠키 및 인증 정보 포함 요청 허용
}

이 설정을 통해 웹 애플리케이션의 CORS 정책을 세밀하게 조정할 수 있게된다.

profile
lovjgb

0개의 댓글