본문으로 바로가기

[Interview] CORS에 대해 말씀해주세요.

CORS에 대해 말씀해주세요.

◆ 실제로 답한다면 ...

CORS는 cross origin resource sharing으로 교차 출처인 정보를 공유할 수 있게 하는 것입니다.

CORS를 알기 위해서는 SOP를 알아야 합니다.

SOP는 same origin policy동일 출처 정책입니다.

즉 브라우저에서는 보안을 위해 같은 출처인 경우만 정보를 주고 받을 수 있도록 정책을 세운 것입니다.

따라서 다른 출처끼리 정보를 주고 받을 때 발생하는 문제입니다.

보통 이러한 것을 해결하기 위해 서버에서는 인증된 url을 등록할 수 있습니다.

이후 해당 url에서 정보를 요청하는 경우는 정보를 주고 받을 수 있게 됩니다.

따라서 흔히 말하는 CORS 에러는 브라우저가 보안을 위해 설정한 SOP 때문에 일어나는 것입니다.

 

◆ 꼬리질문

Q. 브라우저가 보안을 위해 SOP를 한다고 했는데 하지 않으면 어떠한 문제가 발생하나요?

간단하게 예를들면 구글 사이트에 접속하려고 한다고 가정해보겠습니다.

그런데 해커가 쿠글이라는 사이트를 제작하여 접속하도록 유도했습니다.

사용자가 쿠글에 접속하여 html, css, js를 받아와서 브라우저가 렌더링되었다고 하겠습니다.

그럼 js에서 해커가 심어둔 악성 코드가 실행되거나 무작위 api 요청을 날라갈 수 있습니다.

따라서 위와 같은 문제를 사전에 막기 위해 sop 정책을 하고 있습니다.

 

Q. CORS 에러는 서버에서 보내는 것인가요?

CORS 에러를 띄우는 것은 브라우저가 합니다.

브라우저는 http 관련 통신이 일어날 때 cors 검증을 해야하는 지 아닌 지 판단합니다.

만약 필요한 경우 서버에 cors 검증을 요청합니다.

위 과정을 preflight request 라고 합니다.

서버의 응답으로 브라우저가 에러를 띄우거나 요청을 이어서 진행합니다.

 

추가 궁금증을 위한 검색 keyword

  • CORS
  • SOP
  • 출처 (origin / protocol + host + port)

마지막

해당 내용은 틀릴 수도 있습니다. 틀린 내용이 있으면 조언 부탁드립니다.

반응형