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