CORS란 무엇이고 목적은 어떻게 되는지 설명해주세요. 그리고 NodeJS 기반의 웹 서버에서 CORS를 어떻게 설정하는지 설명해주세요.

Sang heon lee·2021년 11월 17일
0

기술면접준비

목록 보기
2/16

CORS란?

  • Cross Origin Resource Sharing 의 약자
  • 다른 출처(Origin) 간에 자원을 공유하는 것을 설정하기 위한 옵션입니다.

CORS 의 등장 이유

  • Same Origin Policy (동일 출처 정책) 에 의하여 CORS라 등장하였습니다. Same Origin Policy 란 다른 출처(Origin) 와의 자원을 공유 혹은 응답 하는것을 제한하는 것을 의미합니다.
  • 하지만 클라이언트, 서버간의 도메인이 다르고 외부 API등을 사용하여 자원을 요청하는 경우가 있기에 CORS를 사용하여 사전에 어떤 출처 혹은 어떤 메소드에 대해서는 자원 공유를 허용한다고 설정해놓는 것을 CORS를 설정해 놓는다고 말합니다.

CORS 의 동작 과정

  • 클라이언트쪽에서는 실제 요청을 보내기 전에 preflight 라는 사전 요청을 보내어 서버에게 수락 요청을 보내게 됩니다. 이 요청에는 Access-Control-Request-method/Headers 정보가 담겨져 있는데 각각 실제 요청에 쓰일 메소드 , 헤더 등의 정보를 담아서 사전 요청을 하게 됩니다.
  • 서버는 이 요청을 보고 Access-Control-Allow-Origin/method/Headers 등의 응답을 보내주게 됩니다. 이 헤더에는 허용되는 출처, 메소드, 헤더 등의 설정 정보가 담겨져 있습니다.
  • 이 preflight 에 대한 요청, 응답이 정상적으로 이루어지고 난 뒤에 실질적인 요청, 응답이 이루어 지게 됩니다.

CORS 사용

  • 보통 npm 혹은 express 의 cors 미들웨어를 사용하여 CORS 설정을 하게 됩니다.

  • CORS 설정에는 어떤 출처에 CORS를 수락할 것인지를 정하는 origin

  • Access-Control-Allow-Credential 헤더를 포함하여 쿠키 등의 정보를 포함할것인지를 정하는 crendential

  • 한번 수락한 preflight 의 유효기간을 정하는 maxage

  • 어떤 메소드들을 수락할 것인지 정하는 methods 등이 있습니다.

profile
개초보

0개의 댓글