본문 바로가기
Understanding Web

[WEB] What is CORS?(CORS란 무엇인가)

by Luciditas 2023. 2. 6.
728x90

SOP

-Same Origin Policy(동일 출처 정책)의 줄임말이다.

-같은 출처의 리소스만 공유가 가능하다는 뜻이다.

-여기서 Origin(출처)는 다음을 의미한다.

-출처는 프로토콜, 호스트, 포트로 구성돼 있다.

-이 3개 중 하나라도 다르다면 동일한 출처라고 하지 않는다.

SOP의 탄생배경

동일 출처 쟁책은 잠재적으로 해로울 수도 있는 문서를 분리함으로써 공격 받을 경로를 줄인다.

    => 해킹 등의 위협에서 더 안전해 질 수 있게 하기 위해서이다.

이러한 보안상의 이유로 모든 브라우저에서는 SOP를 사용한다. 하지만 많은 경우에 다른 출처의 리소스를 사용한다.

그렇다면 SOP를 채택하는 출처의 리소스를 어떻게 받아 올 수 있을까? 이를 위해 필요한 것이 바로 CORS다.

CORS

Cross-Origin Resource Sharing의 줄임말로 교차 출처 리소스 공유를 뜻한다.

CORS는 추가 HTTP 헤더를 사용해서 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제

 

 

CORS 작동 방식

CORS의 작동 방식에는 크게 3가지가 존재한다.

 

1.프리 플라이트 요청 (Preflight Request)

-실제 요청을 하기 전 OPTIONS 메서드로 사전 요청을 보내 해당 출처 리소스에 접근 권한이 있는지 확인하는 것.

2.단순 요청 (Simple Request)

-특정 조건이 만족되면 preflight 요청을 생략하고 요청을 보내는 것이다.

-특정 조건은 다음과 같다.(하지만 모두 만족시키는 것은 어렵다.)

3.인증 정보를 포함한 요청 (Credentialed Request)

요청 헤더에 인증 정보를 담아보내는 요청이다.

출처가 다를 경우 별도의 설정을 하지 않으면 쿠키를 보낼 수 없다.

이 경우 Client, Server 모두 CORS 설정이 필요하다.

 

Client : 요청 헤더에 withcredentials : true를 넣어줘야한다.

 

Server : 응답 헤더에 Access-Control-Credentials : true를 넣어줘야한다.

Access-Control-Allow-Origin을 설정할 때 *(와일드카드)로 설정하면 에러가 발생한다.

 

 

728x90

'Understanding Web' 카테고리의 다른 글

[WEB] OAuth란?  (0) 2023.03.09
SEO(Search Engine Optimization)  (0) 2023.03.01
[WEB] What is REST API? ( REST API란? )  (0) 2023.01.31