loading

새소식

Tip

[Tip] CORS 문제 해결 방법 (Springboot <-> React)

  • -
728x90
반응형
 
 

목차

1. CORS 란?

2. CORS 동작 방식

3. Springboot 와 React 사이 CORS 오류 해결 방법

 

CORS 란?

 

 

Cross-Origin Resource Sharing(교차 출처 리소스 공유)

 : 웹 페이지 상의 제한된 리소스를 최초 자원이 서비스된 도메인 밖의 다른 도메인으로부터 요청할 수 있게 허용하는 구조

: 같은 출처에서만 리소스를 공유할 수 있다는 규칙을 가진 정책인 SOP(Same Origin Policy, 동일 출처 정책) 과는 다르게 다른 출처 리소스에 접근성을 높이기 위해 CORS가 등장했다.

 

 

 

CORS 동작방식

 

🔸Simple Requests (단순 요청)

 - 예비 요청을 보내지 않고 서버에 본 요청을 보낸 후, 서버가 응답 헤더에 Access-Control-Allow-Origin 과 같은 값을 보내면 그 때 브라우저가 CORS 정책 위반 여부를 검사하는 방식

 

🔸Prelight Requests (예비 요청)

- 본 요청을 보내기 전에 보내는 예비 요청으로 OPTIONS 메소드가 사용된다.

 

🔸Credentialed Requests (신용요청)

- 인증된 요청을 사용하는 방법으로 쿠키, 인증 헤더, TLS 클라이언트 인증서 등의 신용정보가 함께 요청된다.

 

https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

 

Springboot <-> React 연결(CORS 에러 해결 방법)

 

Springboot 

 

// WebConfig.java

@Configuration
public class WebConfig implements WebMvcConfigurer{
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedMethods("*")
                .allowedOrigins("http://localhost:3000");
    }
}

 

==> https://localhost:3000(React:Client Server) 에서의 모든 메서드를 허용한다

 

+ 추가적으로 Spring security 설정을 해놨다면

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration

 

application.properties 에 위 코드 추가 혹은 Application.java 파일에서

@SpringBootApplication 어노테이션 옆에 밑의 코드 추가

(exclude = SecurityAutoConfiguration.class)

 

 

ReactJS

 

// package.json
 
 ...
  
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "proxy": "http://localhost:8080",
    "eject": "react-scripts eject"
  },
  
  ...

 

==> package.json 파일에 scripts 부분에서 proxy 부분을 추가한다.

localhost:8080(Springboot Server)

 

 

728x90
반응형
Contents

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

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