HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
[New] 아만드팀
[New] 아만드팀
/
🌟
팀프로젝트
/
📕
만두 WIKI
/
CORS 설정
CORS 설정
CORS 설정

CORS 설정

Spring MVC 방식 Preflight 테스트 방법결론 Reference
 
  • 시큐리티의 CORS 필터, Spring의 CORS 방식
    • CORS with Spring (MVC, Security)
      • 스프링 MVC의 CORS 설정을 하면 자동적으로 Security에서 해당 CORS 설정을 사용하게 된다.
      notion image
 

Spring MVC 방식

@Configuration public class WebConfig implements WebMvcConfigurer { private static final String ALLOWED_METHOD_NAMES = "GET,HEAD,POST,PUT,DELETE,TRACE,OPTIONS,PATCH"; @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedMethods(ALLOWED_METHOD_NAMES.split(",")) .exposedHeaders(LOCATION); } }
  • addMaping: 해당 설정을 적용할 API 범위 선택 (/** -> 전체 적용)
  • allowedOrigins: Origin을 허용할 범위 선택 (생략 시 *와 같은 의미로 전체 허용됨)
  • allowedMethods: 허용할 HTTP 메서드 선택
  • exposedHeader: 서버에서 반환할 헤더 지정
 
notion image
  • 기존의 Spring MVC 방식으로 적용하였지만 CORS preflight 문제가 발생하게 된다.
  • Security에서 CORS 필터를 적용함으로써 해결된다.
    • MVC설정만 한다고 해서 Security에 적용이 되지 않는 것 같다.
notion image
notion image
  • 토큰이 없어 401 코드가 내려온 모습
 

Preflight 테스트 방법

notion image
 
  • 프리플라이트 양식에 맞지 않게 OPTIONS만 보낼 경우
    • Origin : 프로토콜 + 호스트 + 포트
    • Access-Control-Request-Method : 요청하려는 메서드 정보
    • Access-Control-Request-Headers : 요청에 담길 헤더 정보
notion image
 
 
  • OPTIONS 메서드에 대해 모두 열어준 경우
    • notion image
      notion image
    • 일단 Preflight의 경우 브라우저에 로직이 있기 때문에 OPTIONS 메서드에 대해 열어주기 않고 후에 문제가 된다면 변경하는 식으로 하면 될 것 같다.
 

결론

  • 현재는 모든 origin에 대해서 열어주었지만 만약 프론트 origin이 정해진다면 해당 origin으로 변경해줘야 한다!
 

Reference

  • https://docs.spring.io/spring-security/reference/6.0.0-M4/servlet/integrations/cors.html#page-title
  • https://yeonyeon.tistory.com/236
  • https://yeonyeon.tistory.com/232
  • https://prolog.techcourse.co.kr/studylogs/2414