HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🧚
[1기]최종 프로젝트 데브코스
/
📜
[팀13] 사각사각 ✏️
/
🎊
기술 문서
/
🏕️
CORS 설정
🏕️

CORS 설정

 
프론트엔드와 협업을 위해서는 cors 설정이 필요하다.
 
  1. 허용 도메인과 엔드포인트를 열어준다. YML으로 관리
cors: origin: - http://localhost:3000 // 프론트 로컬 서버 - http://127.0.0.1:3000 - https://monthsub.netlify.app // 프론트 배포 서버 allows: //엔드포인트 get: - /assets/** - /h2-console/** - /v3/api-docs/** - /swagger-monthsub.html - /swagger-ui/** # endpoint - /health - /main - /series - /series/sort - /series/{id} - /series/search/title - /series/search/nickname - /users/{id}/other post: - /users/login - /users/signup
 
  1. SecurityConfig에 적용시킨다.
@Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .mvcMatchers(HttpMethod.GET, this.security.getAllows().getGet().toArray(String[]::new)) .permitAll() .mvcMatchers(HttpMethod.POST, this.security.getAllows().getPost().toArray(String[]::new)) .permitAll() .anyRequest().fullyAuthenticated() .and() .cors().configurationSource(corsConfigurationSource()) // cors 설정 .and() ... 생략 }
 
  1. Security CORS 설정을 해준다.
@Bean public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration configuration = new CorsConfiguration(); Arrays.stream(this.security.getCors().getOrigin()) .toList() .forEach(configuration::addAllowedOrigin); configuration.addAllowedHeader("*"); configuration.addAllowedMethod("*"); configuration.setAllowCredentials(true); UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", configuration); return source; }
CORS Setting for Spring Security
corsConfigurationSource 메소드의 CorsConfiguration 부분을 이해 하기 위해서는 CORS[클릭] 관련 글을 먼저 읽어주세요. BackEnd API 서버와 Web FrontEnd 서버를 각각 구성할경우 CORS 설정을 해야한다. CORS 설정으 Filter 를 사용해도 가능하다 히지만 Security 와 같이 사용할 경우 Filter에서 충돌이 발생하는 경우가 있다고 한다. Filter를 구성하여 서비스 했지만 문제가 발생한 적은 없었다.
https://medium.com/@sindepal/cors-setting-for-spring-security-39133407ed8e
 
  1. Web CORS 설정을 해준다.
@Configuration public class WebConfig implements WebMvcConfigurer { private final Security security; public WebConfig(Security security) { this.security = security; } @Override public void addCorsMappings(CorsRegistry registry) { registry .addMapping("/**") .allowedOrigins(this.security.getCors().getOrigin()) .allowedMethods("*"); } }