naraewool 2022. 7. 26. 23:53
728x90

보안을 위해서 동일한 출처(same source)에서 오는 요청에만 응답도록 하는 것을 원칙으로 한다. -> Same Orign Policy (SOP) 정책(기본값)
그 외의 출처에서 오는 요청에도 응답하기 위해서는 미리 해당 도메인을 등록*해두어야 한다. 조금 더 보충하자면, 프론트엔트 쪽 브라우저(예: 크롬)에서는 모든 사이트를 신뢰할 수 없으므로 사전에 등록하지 않은 사이트에서 요청한 API 호출에는 응답하지 않는다. 
*How? 백엔드 서버쪽에서. 장고, 스프링, Express 사용(백엔드 서버에서 사용하는 언어) 시 CORS 옵션 추가 가능

이렇게  Cross-orgin resource sharing (CORS)는 서로 다른 출처(orgin) 간에 리소스(데이터)를 공유하도록 허용하는 정책이다.  여기서 출처는 웹사이트와 API의 엔드포인트가 되고, 리소스는 주고 받는 데이터를 말한다.

서로 다른 출처로 요청하는 경우 (cross-orgin인 경우), 
1. 요청 헤더에 orgin 값을 보냄
2. 요청을 받은 서버는 응답 헤더에  Access-control-allow-origin 정보를 보냄
3. 브라우저가 이 두 값을 비교하여 값이 같으면 안전한 요청으로 간주하고 응답을 받아올 수 있도록 허용

단, 토큰과 같이 사용자 인증 정보가 담긴 요청일 경우에는 `Access-Control-Allow-Credentials`도 true로 설정해줘야 한다고 함.

 

* 참고

- 얄코 강의

- MDN