사이드 프로젝트를 진행 중 프론트 담당자로부터 CORS를 열어달라는 요청이 들어왔다.
1. CORS(Cross Origin Resource Sharing)
- Origin 의 위치가 다를 때 자원을 주고받을 수 있도록 하는 http 통신 프로토콜.
- 프로토콜(https)+호스트(ip주소)+포트번호(8080) 의 조합
- 클라이언트와 서버의 Origin 이 다를 때 CSRF와 XSS 등에 취약하다 때문에 / 특정 경로 / http 메서드 / 특정 해더 / 포트 에 대해 접근을 허용할 수 있다.
2. CORS 설정 방법
CORS를 허용하는 방법에는 크게 두 가지가 있다.
1. CorsFilter를 구현하여 Spring Security에서 관리하는 방법2. SpringFramwark 가 제공하는 MVC 기능을 활용하여 전역/ Controller 단에서 제어하는 방법
프론트 담당자들의 요청은 모든 api에 대해 CORS를 열어달라는 요청이었음으로
프로젝트에는 MVC기능을 활용한 전역으로 CORS를 제어하는 방식을 선택하였다.
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("*") //해당하는 주소에서의 요청만 접근가능
.allowedMethods("*") // 해당하는 메서드만 접근 가능
.allowedHeaders("*") // 해당 header를 가지고 있는 요청만 접근 가능
.allowCredentials(true); // 브라우저가 쿠키나 Authorization 헤더에 접근 가능한지 여부
}
}
'Spring' 카테고리의 다른 글
서블릿 컨테이너, 애플리케이션 초기화 (1) | 2024.04.20 |
---|---|
공공데이터 Springboot로 파싱 (0) | 2024.04.13 |
Security 인가(Authorization) 적용 (1) | 2024.03.16 |
Mappstruct 사용 (0) | 2024.03.11 |
SpringSecurity 프로젝트 적용 (0) | 2024.03.03 |