체크 포인트 [Browser Security]

1번 문제

해설

A가 맞는 이유는 CORS의 뜻을 알면 알 수 있다. CORS는 Cross-Origin Resource Sharing의 약자로 '교차 출처 리소스 공유'라는 뜻을 가지고 있다. 이 말은 서로 출처가 다른 클라이언트와 서버가 리소스를 공유할 때 CORS라는 기술을 써서 출처가 다름을 해결한다는 뜻이다.

B가 맞는 이유는 서버가 허용하는 origin에 따라 클라이언트가 서버의 리소스에 접근할 수 있는지 없는지 결정되기 때문이다. 만약 서버가 허용하는 origin에 클라이언트의 origin이 포함되지 않으면 서버의 리소스에 접근할 수 없게 된다.

C가 틀린 이유는 클라이언트 쪽에서는 서버에서 어떤 origin의 요청을 허용하는지 알 수 없고, 다만 preflight(사전 전달)요청을 통해서 요청에 대한 응답의 헤더에 어떤 origin을 허용하는지 알 수 있을 뿐이다.

D가 맞는 이유는 CORS 에러가 다른 origin에서만 발생하기 때문이다.


2번 문제

해설

origin이 같은(동일 출처) 경우는 스킴(프로토콜)과 호스트(도메인)과 포트가 같은 경우이다. 예시로는 다음이 있다.

http://example.com/app1/index.html
http://example.com/app2/index.html

3번 문제

해설

A가 맞는 이유는 리소스에 영향을 미칠 수 있는 가능성이 있는 HTTP 메소드(GET을 제외한 메소드들)를 사용할 땐 preflight 요청이 먼저 보내지고, 그 메소드로는 OPTIONS가 설정 되어있다.

B가 맞는 이유는 실제 요청을 보내기 전 preflight 요청을 통해 실제 요청이 가능한지의 여부가 판단되기 때문이다.

C가 맞는 이유는 모든 cross orgin 요청이 preflight 요청을 발생시키는 것이 아니라 리소스에 영향을 미칠 수 있는 가능성이 있는 HTTP 메소드를 사용할 때 발생한다.

좋은 웹페이지 즐겨찾기