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을 설정할 때 *(와일드카드)로 설정하면 에러가 발생한다.
'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 |