Preloader image
DDD

자바

spring-boot @CrossOrigin 외부 접속 제한 설정

작성자 관리자 (admin)
조회수 103
입력일 2024-04-26 16:51:40


@CrossOrigin 애노테이션은 Spring Framework에서 CORS (Cross-Origin Resource Sharing)를 제어하는 데 사용됩니다. 이를 사용하여 특정 컨트롤러나 핸들러 메소드에서 CORS를 구성할 수 있습니다.
외부 접속을 제한하기 위해서는 allowedOrigins 매개변수에 허용할 도메인을 명시하면 됩니다. 다른 도메인에서의 요청을 허용하지 않으려면 와일드카드 대신 허용할 도메인을 직접 지정합니다.
예를 들어, 특정 컨트롤러의 모든 핸들러 메소드에서 외부 접속을 제한하려면 다음과 같이 @CrossOrigin 애노테이션을 사용합니다:

-- 예제1)
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {

    // --- @CrossOrigin("*") // 모든 요청에 접근 허용
    @CrossOrigin(origins = "http://allowed-domain.com")
    @GetMapping("/api/data")
    public String getData() {
        return "Data from API";
    }
}

아래 코드에서 /api/data 엔드포인트는 http://allowed-domain.com 도메인에서의 요청만 허용합니다. 다른 도메인에서의 요청은 CORS 오류가 발생합니다.
또는 모든 핸들러 메소드에 대해 전역적으로 CORS를 설정하려면 WebMvcConfigurer 인터페이스를 구현하여 addCorsMappings() 메소드를 오버라이드합니다:

-- 예제2)
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://allowed-domain.com")
                .allowedMethods("GET", "POST", "PUT", "DELETE");

    }
}

위의 코드에서 addCorsMappings() 메소드는 모든 경로("/**")에 대해 http://allowed-domain.com에서의 요청만 허용하며, 허용되는 메소드는 GET, POST, PUT, DELETE입니다.

-- 예제3

# pom.xml
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>

# application.properties
CORS 설정: Spring Boot 애플리케이션의 설정 파일(application.properties 또는 application.yml)에 CORS 관련 설정을 추가합니다. 특정 도메인에서의 요청만 허용하려면 해당 도메인을 allowedOrigins에 지정합니다.

# CORS 설정
spring.mvc.cors.allowed-origins=http://allowed-domain.com
spring.mvc.cors.allowed-methods=GET,POST,PUT,DELETE
spring.mvc.cors.allowed-headers=Origin,Content-Type,Accept,Authorization
spring.mvc.cors.max-age=3600

 

^