📍 CORS 란?

  • Cross Origin Resource Sharing 의 약자로 다른 출처의 자원을 공유하는 것 이라고 한다.
  • Spring Cloud 에서는 아무런 설정을 하지 않으면 보안적인 이유로 다른 출처의 HTTP 요청을 제한한다고 한다
    • SOP (Same Origin Policy)
    • 프론트와 백 서버는 나눠져 있기 때문에 CORS 정책을 설정해줌으로 다른 출처의 자원에 접근할 수 있도록 설정해줘야 한다.

📍 Cross-Origin 이란?

  • 프로토콜이 다른경우
  • 도메인이 다른경우
  • 포트번호가 다른경우

📍 필요성

  • 모든 곳에서 자원 접근이 가능하다면, 우리의 사이트를 흉내내 피싱사이트를 만들어 사용자 정보를 탈취할 수 있게된다.
    • 이러한 공격을 막기위해 필요한 경우에만 서버와 합의해 요청할 수 있도록 하는것이 CORS 이다.

📍 CORS 의 동작 방식

  1. 단순 요청 (Simple Request)
    • preflight 요청 없이 바로 요청을 보낸다.
    • 단순 요청이 가능한 경우
      • Content-type
        • application/x-www-form-urlencoded
          • mulipart/form-data
          • text/plain
      • GET , POST , HEAD 요청
      • http 해더
        • Accept, Accept-Language, Content-Language , Content-Type
  2. 사전 요청 (Preflight Request)
    • OPTIONS 메서드를 통해 다른 도메인 리소스에 요청이 가능한지 실제 요청 전에 미리 요청을 보내는 것.
    • 사전에 Preflight 요청이 가능한지 확인되면 실제 요청을 보내는 방식
    • Request 에 포함되어야 하는 정보
      • Origin - 요청 출처
      • Aceess-Control-Request-Method - 실제 요청의 메서드
      • Access-Control-Headers - 실제 요청의 추가 헤더
    • Response 에 포함되어야 하는 정보
      • Access-Control-Allow-Origin - 허가 출처
      • Access-Control-Allow-Methods - 허가 메서드
      • Access-Control-Allow-Headers - 허가 해더
      • Access-Control-Max-Age - Preflight 응답 캐시 시간
profile
잘못된 내용 PR 환영

0개의 댓글