다른 출처로의 리소스 요청을 제한하는 것과 관련된 두 가지 정책
- CORS(Cross-Origin Resource Sharing)
- SOP(Same-Origin Policy)
origin?
출처(orgin)는 Protocol과 Host, 그리고 :8080과 같은 포트 번호까지 모두 합친 것을 의미한다.
즉, 서버의 위치를 찾아가기 위해 필요한 가장 기본적인 것들을 합쳐놓은 것을 말한다.
오리진과 비슷한 개념으로는 도메인(domain)이 있다. 둘 사이의 구체적인 예로는 아래와 같다.
• 도메인(domain): naver.com
• 오리진(origin): https://www.naver.com/PORT
도메인과 오리진의 차이는 프로토콜과 포트번호의 포함 여부차이
SOP?
Same-Origin Policy
“같은 출처에서만 리소스를 공유할 수 있다”라는 보안 정책
웹 인터페이스의 다양화 및 다른 출처로 된 데이터를 가져와 사용하는 것에 대한 보편화 등으로
몇 가지 예외 조항을 두고 이 조항에 해당하는 리소스 요청은 출처가 다르더라도 허용하기로 했다!
그 중 하나가 CORS
CORS?
Cross-Origin Resource Sharing
교차(다른) 출처 리소스 공유의 영문 줄임말
어떠한 오리진에서 작동하고 있는 웹 어플리케이션이 다른 오리진 서버로의 엑세스를
오리진 사이의 HTTP 요청에 의해 허가를 할 수 있는 체계
같은 출처란?
사실 두 개의 출처가 서로 같다고 판단하는 로직
=> 두 URL의 구성 요소 중 Scheme, Host, Port 이 3가지만 동일하면 된다.
Preflight
브라우저가 본 요청을 보내기 전에 보내는 예비 요청
HTTP 메소드 중 OPTIONS 메소드 사용
후 본 요청을 보낸다!
Simple Request
예비 요청을 보내지 않고 바로 서버에게 본 요청부터 받은 후, 서버가 이에 대한 응답의 헤더에 Access-Control-Allow-Origin과 같은 값을 보내주면 그때 브라우저가 CORS 정책 위반 여부를 검사하는 방식이다.
Preflight와 예비 요청의 존재 유무만 다르다
CORS를 허용하기 위한 HTTP 헤더 4가지
1) access-control-allow-origin : 허락한 도메인 주소
2) access-control-allow-method : 허용하는 메소드
3) access-control-allow-headers : 사용가능한 헤더
4) access-control-max-age : preflight requset 허용시간(초)
'서버 기본상식' 카테고리의 다른 글
3) 도메인 , DNS (0) | 2021.09.02 |
---|---|
2) IP와 포트 (0) | 2021.09.02 |
1) URL (0) | 2021.09.02 |
클라이언트 - 서버 아키텍처 (0) | 2021.09.02 |
HTTP method 정리 (0) | 2021.07.29 |
댓글