Spring MVC/04.Rest

[springboot]CORS 설정

  • -

CORS(Cross Origin Resource Sharing)는 REST 서비스를 제공하려면 필요한 녀석이다. 물론 CORS를 제공하지 않더라도 서비스가 가능하기는 하지만 서비스를 받는 쪽에서 RestTemplate을 이용하는 등 부가적인 작업이 필요하다.

https://goodteacher.tistory.com/267?category=828440 

 

03. RestTemplate

RestTemplate 가끔 REST API를 자바 영역에서 사용해야할 경우가 있다. ajax로 처리해야 하는데 서비스를 제공하는 서버에서 cross origin에서의 접근을 허용하지 않는 경우가 대표적이다. 이런 경우는 자

goodteacher.tistory.com

이번 포스트에서는 SpringBoot를 이용해서 CORS를 설정하는 방법에 대해 정리해보자.

 

Spring Boot에서 CORS 설정

 

개별 controller에 설정하기

첫 번째 방법은 각각의 @Controller 들에 애너테이션을 이용해서 설정하는 방법이다. 이때는 @CorsOrigin 애너테이션이 사용된다.

@CrossOrigin은 String [] 로 접속하는 origin(클라이언트 주소)를 설정할 수 있다.

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CrossOrigin {
	@AliasFor("origins")
	String[] value() default {};
	@AliasFor("value")
	String[] origins() default {};
}

 

아래의 예는 모든 클라이언트에서의 접속을 허용하는 예이다.

@RestController
@RequestMapping("/api/category")
@CrossOrigin("*")
public class CategoryController {
    . . .
}

 

@Configuration에서 통합 설정

첫 번째 방법은 세세하게 컨트롤러마다 설정할 수 있다는 장점이 있지만 Controller가 많아지고, 어차피 오픈하기로 했다면 다소 번거로움이 있다. 이때는 @Controller에서 WebMvcConfigurer를 implements 한 후 addCorsMappings 메서드를 재정의 해서 설정할 수 있다.

다음의 예는 api의 하위 모든 리소스에 대해 모든 origin으로부터의 접속을 허용하는 예이다.

@SpringBootApplication
public class ApsHelperApplication implements WebMvcConfigurer{
	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/api/**").allowedOrigins("*");		
	}

	public static void main(String[] args) {
		SpringApplication.run(ApsHelperApplication.class, args);
	}
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.