반응형
Cross-Origin Resource Sharing
자신의 출처와 리소스가 다른 출처의 요청을 허용하는 것을 의미한다.
예를 들면 도메인A가 도메인B에 데이터를 요청하는 것을 허용해주는 것을 의미한다..
본래 브라우저는 보안상의 이유로 출처가 다른 리소스의 요청을 제한한다. 다른 출처에 요청하기 위해서는 해당 출처에서 올바른 CORS 헤더를 포함한 응답을 반환해야 한다.
// 아래는 https://bar.other/resources/public-data/ 출처에 대한 요청을 허용하는 코드예제이다.
const xhr = new XMLHttpRequest();
const url = 'https://bar.other/resources/public-data/';
xhr.open('GET', url);
xhr.onreadystatechange = someHandler;
xhr.send();
위의 경우 https://foo.example 브라우저에서 다른 출처에 요청을 보내고 있는 것으로, 출처가 다른 요청을 받은 서버는 Access-Control-Allow-Origin:을 통해 자신에 대해 요청하는 모든 도메인의 접근을 허용한다는 내용의 헤더를 응답에 함께 보내고 있다.
Access-Control-Allow-Origin은 가장 간단한 접근 제어 프로토콜이다.
nodejs에서 cors 허용.
import express from 'express';
import cors from 'cors';
const app = express();
// 특정 도메인에 대해서만 cors허용
// 모든 도메인에 대해 cors 허용하려는 경우에는 app.use(cors())
let allowlist = ['http://example-1.com','http://example-2.com'];
let corsOptionsDelegate = function (req:any, callback:Function) {
let corsOptions
if(allowlist.indexOf(req.header('Origin'))!== -1) {
corsOptions = { origin:true }
}else {
corsOptions = { origin:false }
}
callback(null,corsOptions);
}
app.use(cors(corsOptionsDelegate))
출처
반응형
'이론' 카테고리의 다른 글
[ WEB ] - 인터넷은 어떻게 작동하는가? (0) | 2022.06.01 |
---|---|
[ Web이론 ] - 네트워크 인터페이스 카드 / 트랜시버 / 허브 / 스위치 / 라우터 / 로드밸런서 / 스케일 아웃 / 스케일 업 / Rack (0) | 2022.05.26 |
[ WEB ] 인캡슐레이션(Encapsulation), 디캡슐레이션(Decapsulation) (0) | 2022.05.24 |
[ WEB ] - 프로토콜 / 이더넷 (0) | 2022.05.23 |
[이론] - Rest API / 웹표준 / Javascript 원시값 / 클로저 /가비지컬렉션 / 바벨 / 호이스팅 (0) | 2022.04.05 |