티스토리 뷰

728x90
728x90

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 설정을 할 때는 어떤 도메인이 자신의 서버에 접근할 수 있는지 충분히 고려해야 합니다. 실수로 모든 도메인에 대한 접근을 허용하면, 악의적인 도메인에서 자신의 서버를 악용할 수 있기 때문입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함