CORS preflight 요청에 대해 401 에러 해결(Spring security config)

Xonic·2021년 8월 26일
2
post-thumbnail

목차

  1. 현재 로컬 개발 환경 (로컬 개발 서버)
  2. 완벽한 해결
  3. 참조

현재 로컬 개발 환경 (로컬 개발 서버)

  • docker-compose 이용하여 로컬 개발 서버 구축하였음.
  • 클라이언트 요청시 Authorization 헤더가 없으면 정확히 잘 동작함.
  • 하지만 로그인 후 Authorization가 있으면 인증 요청에 대해서 cors 에러 발생!

해결책

  • Preflight request에 대해서(Options method) 서버는 401 client error 뱉어냄.
  • Credentialed Request 를 사용하기 때문에 서버에서 설정을 몇가지 더 해준다.
    1. headerAccess-Control-Allow-Origin 정확히 명시.
      • ex) Access-Control-Allow-Origin: http://local.dev-meeting-study.site
    2. headerAccess-Control-Allow-Credentials: true 추가
  • response header엔 필요한 정보 명시 완료!!

변경 전

변경 후

  • 하지만 여전히 cors 에러 뱉는다...

완벽한 해결 😸

  • Preflight request에 대해, 인증을 하지 않고 요청을 모두 허용한다.

  • Spring security 설정에 and().requestMatchers(CorsUtils::isPreFlightRequest).permitAll() 라인 추가.
    (메서드 레퍼런스 스태틱 메서드 참조 방식)
    (람다 방식)

  • 해결 완료! (요청 완료 사진은 나중에 포스팅 예정)

참조

profile
공부 한 것을 공유하는 블로그입니다.

0개의 댓글