티스토리 뷰
CORS (Cross-Origin Resource Sharing)는 웹 페이지가 다른 도메인의 리소스에 액세스할 수 있게 해주는 메커니즘입니다. CORS는 HTTP 헤더를 사용하여 다른 도메인의 리소스에 액세스할 수 있는 권한을 부여합니다. 기본적으로 웹 보안 모델인 동일 출처 정책 (Same-Origin Policy)은 스크립트가 다른 도메인의 리소스에 접근하는 것을 제한하므로, CORS는 이를 완화하는 역할을 합니다.
CORS는 주로 AJAX 요청, Fetch API 요청, 웹 폰트, WebGL 텍스처, 이미지/비디오 프레임, canvas 요소 (toDataURL(), getImageData()) 등에서 사용됩니다.
Node.js에서는 'cors'라는 미들웨어를 사용하여 CORS를 구현할 수 있습니다. 'cors' 미들웨어는 요청 헤더의 Origin을 확인하고, 사전 설정된 규칙에 따라 적절한 CORS 헤더를 응답에 추가합니다.
다음은 Node.js에서 'cors' 미들웨어를 사용하는 방법입니다:
먼저 'cors' 모듈을 설치합니다:
npm install cors
const express = require('express');
const cors = require('cors');
const app = express();
app.use(cors());
app.get('/data', (req, res) => {
res.json({ message: 'This is data from the server.' });
});
app.listen(3000, () => console.log('Server is running on port 3000'));
이 기본 설정은 모든 도메인에서 서버에 접근할 수 있게 합니다. 만약 특정 도메인만 허용하고 싶다면, 다음과 같이 'cors' 미들웨어를 설정할 수 있습니다:
app.use(cors({
origin: 'http://your-allowed-origin.com'
}));
여러 도메인을 허용하려면 origin 옵션에 배열을 제공할 수 있습니다.
app.use(cors({
origin: ['http://your-first-allowed-origin.com', 'http://your-second-allowed-origin.com']
}));
'cors' 미들웨어는 또한 preflight 요청을 처리합니다. preflight 요청은 실제 요청을 보내기 전에 서버가 요청을 처리할 수 있는지 확인하기 위해 브라우저에 의해 자동으로 전송되는 요청입니다. 'cors' 미들웨어는 이러한 preflight 요청에 적절한 응답을 보내서, 실제 요청이 처리될 수 있도록 합니다.
CORS는 매우 중요한 보안 메커니즘이므로, CORS 설정을 할 때는 어떤 도메인이 자신의 서버에 접근할 수 있는지 충분히 고려해야 합니다. 실수로 모든 도메인에 대한 접근을 허용하면, 악의적인 도메인에서 자신의 서버를 악용할 수 있기 때문입니다.
'개발' 카테고리의 다른 글
JWT사용하여 API 인증절차 구현시 미들웨어를 이용하는 방법(feat. NodeJS - express stack) (0) | 2023.07.04 |
---|---|
JWT 갱신 토큰과 Sliding Session을 활용한 보안 전략 (0) | 2023.07.04 |
Redis를 사용한 JWT 갱신 토큰 관리방법 (2) | 2023.07.04 |
[개발]JWT 갱신 토큰 관리 방법(7)- 로컬스토리지/쿠키 구현 (0) | 2023.07.03 |
[개발]JWT 갱신 토큰 관리방법(6)-블랙리스트 구현 (0) | 2023.07.03 |