Post

동적 CORS 화이트리스트 관리

cors는 응답헤더에 client 서버 도메인을 허용한다는 내용이 없으면 발생한다.
즉, response 헤더에 client 도메인을 포함해주면 해결된다.
res.setHeader('Access-Control-Allow-origin', '허용할 도메인');



Node.js에서 Express를 사용하여 CORS를 동적으로 허용하는 방법

1
npm install cors
1
2
3
4
5
6
7
8
9
10
11
12
13
const cors = require('cors');
const whitelist = ['https://example.com', 'https://www.otherdomain.com']; // 허용된 도메인 목록

const corsMiddleware = (req, res, next) => {
  const origin = req.headers.origin;

  if (whitelist.includes(origin)) {
    res.setHeader('Access-Control-Allow-Origin', origin);
  }

  next();
};



전역으로 적용하기

1
app.use(corsMiddleware);


특정 API만 적용하기

1
2
3
app.get('/api/data', corsMiddleware, (req, res) => {
  // ... API 로직
});


추가 고려 사항:

  • 허용 메서드: corsMiddleware의 options에 methods를 추가하여 허용되는 HTTP 메서드를 지정할 수 있습니다. (예: methods: ['GET', 'POST'])
  • 허용 헤더: corsMiddleware의 options에 allowedHeaders를 추가하여 허용되는 HTTP 헤더를 지정할 수 있습니다.
  • 자격 증명: corsMiddleware의 options에 credentials: true를 추가하여 쿠키와 같은 자격 증명을 허용할 수 있습니다.


보안:

  • 화이트리스트에 신뢰할 수 있는 도메인만 포함하도록 주의하세요.
  • 필요하지 않은 경우 credentials 옵션을 사용하지 마세요.
This post is licensed under CC BY 4.0 by the author.