CORS 정책?

Rae-eun Yang·2024년 7월 13일
0

리액트 앱과 REST API를 연결중,
리액트 앱의 요청이 CORS 정책에 의해 차단되었다는 경고가 나온다.

일반적으로 node.js 프로젝트는 3000포트를 사용하고, 스프링은 8080포트를 사용하는데 localhost:3000 -> localhost:8080의 요청은 이론상 다른 웹사이트에서 보내는 요청이므로 기본값으로 CORS 정책이 적용되어 차단이 되는 것이다.

이러한 정책을 어떻게 피해서 프론트와 백이 통신할 수 있을까?

localhost:3000 -> localhost:8080
위와 같은 형태의 요청을 크로스 오리진 리퀘스트(CORS)라고 한다.

우리는 지정된 웹사이트(필자의 경우 localhost:3000)의 요청만 허용하도록 하는 코드를 작성할 것이다.
그것은 @SpringBootApplication으로 지정된 클래스에서 정의하도록 하겠다

@SpringBootApplication
public class RestfulWebServicesApplication {
	public static void main(String[] args) {
    	SpringApplication.run(RestfulWebServicesApplication.class, args);
        
    // WebMvcConfigurer에서 CORS 관련 요소들을 설정 가능
    @Bean
    public WebMvcConfigurer corsConfigurer() {
    	return new WebMvcConfigurer() {
        	public void addCorsMapping(CorsRegistry registry) {
            	registry.addMapping("/**")	// 요청 경로 허용 (/users, /posts, ...)
                	.allowedMethods("*")	// 요청 메소드 혀용 (GET, POST...)
                    .allowedOrigins("http://localhost:3000") // 요청 웹사이트 허용
            }
        }
    };
}

이제 localhost:3000의 모든 요청이 허용된다!

profile
ContentsDev Manager

0개의 댓글

Powered by GraphCDN, the GraphQL CDN