티스토리 뷰

 

관리자 도구에 찍히는 에러 메시지..

흔히 볼 수 있는 교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS) 에러...

 

CORS를 간단히 정리하면 아래와 같다.

CORS는 다른 도메인 간에 리소스를 공유할 때 발생하는 보안상의 이슈를 해결하기 위해 만들어진 매커니즘. 웹 브라우저에서는 보안상의 이유로 다른 출처(Origin)에 있는 리소스를 직접 요청할 수 없다.

 

자세히 정리된 곳은 많으니 따로 정리하진 않겠다.

 

스프링 프레임워크에서는 간단히 해결이 가능하다.

@Configuration
public class CorsConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {

        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("*");
    }

}

코드를 간단히 정리하면 @Configuration 어노테이션을 통해서 스프링이 시작될 때, 다른 Bean이 뜨기전에 호출되며 모든 경로(/**)에 대해 모든 출처(*)에서의 모든 HTTP 메서드(*) 요청을 허용하도록 설정한 것이다.

 

WebMvcConfigurer 인터페이스를 impletents 받았는데, 이 인터페이스는 스프링 MVC 구성을 위한 다양한 기능을 제공한다.

 

대표적으로 사용되는 게, Interceptor 설정과 정적 리소스 처리, 위에서 설정한 CORS 관련 처리이다.

 

아래의 매서드들을 Override 받아서 사용하면 된다.

 

addInterceptors(InterceptorRegistry registry): 인터셉터를 등록하는 매서드

 

addResourceHandlers(ResourceHandlerRegistry registry): 정적 리소스 처리를 위한 매서드

 

addCorsMappings(CorsRegistry registry): CORS(Cross-Origin Resource Sharing) 구성을 위한 메서드

 

이 외에도 여러가지 매서드 들이 있지만(Formatter 등록, URI 매핑, 등) 따로 소개하진 않겠다.(잘안씀) 

 

옛날 옛적에 Spring MVC를 사용할 때는 별도의 servlet-context.xml을 구성해 작성했던 것들인데, 스프링 부트에서는 별도의 인터셉터로 뽑아서 사용하기 쉽게 제공해줬으니 골라서 사용하면될 것 같다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함