인프런 커뮤니티 질문&답변
10강 cors에러 localhost:4000으로 접속했을때 에러
작성
·
125
·
수정됨
1

에러로 의심되는 코드 올릴게요.아래는 nodebird-api 의 routes/index 파일과 middlewares/index.js코드의 corsWhenDomainMaches 모듈인데 뭐가문제인지 모르겠습니다. cors모듈은 사용했는데 말이죠
module.exports = router;
exports.corsWhenDomainMatches = async (req, res, next) => {
const domain = await Domain.findOne({
where: { host: new URL(req.get('origin')).host },
});
if (domain) {
cors({
origin: req.get('origin'),
credentials: true,
})(req, res, next);
} else {
next();
}
}; const express = require('express');
const { verifyToken, apiLimiter, corsWhenDomainMatches } = require('../middlewares');
const { createToken, tokenTest, getMyPosts, getPostsByHashtag } = require('../controllers/v2');
const router = express.Router();
router.use(corsWhenDomainMatches);
// POST /v2/token
router.post('/token', apiLimiter, createToken);
// POST /v2/test
router.get('/test', apiLimiter, verifyToken, tokenTest);
// GET /v2/posts/my
router.get('/posts/my', apiLimiter, verifyToken, getMyPosts);
// GET /v2/posts/hashtag/:title
router.get('/posts/hashtag/:title', apiLimiter, verifyToken, getPostsByHashtag);
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 김영기님이 직면한 문제는 CORS 설정 과정에서 발생하는 오류로 보입니다. 이를 해결하기 위한 몇 가지 요점을 정리해 드리겠습니다.
CORS(Cross-Origin Resource Sharing) 문제는 클라이언트-서버 간 도메인이 다를 때 발생하는 보안 정책 문제로서, 서버 측에서 올바른 CORS 정책을 설정해야 합니다. 자세한 설정 및 오류 메시지를 확인 후 적용해 보시기 바랍니다.
CORS 문제 해결을 위한 기본 점검:
- 요청하는 클라이언트의 도메인과 포트가 서버의 CORS 설정에서 허용되고 있는지 확인하세요.
corsWhenDomainMatches함수에서req.get('origin')을 사용하고 있는데,origin값이 정확한지 로그로 확인해 보세요.
Domain.findOne()으로 찾는 도메인이 데이터베이스에 있는지 확인하세요. 도메인 데이터가 없다면 CORS 설정이 작동하지 않을 것입니다.
- 요청하는 클라이언트의 도메인과 포트가 서버의 CORS 설정에서 허용되고 있는지 확인하세요.
코드 변경 제안:
- CORS 설정을 좀 더 명확하게 하기 위해서 모든 요청에 대해 CORS를 적용해 보는 것도 한 방법입니다. 만약 여전히 문제가 발생한다면, CORS 설정 위치를 코드에서 더욱 명확히 지정해 보세요. 예를 들어,
cors()사용 전 도메인을 정확히 확인하거나credentials옵션을 다시 검토하세요.
- CORS 설정을 좀 더 명확하게 하기 위해서 모든 요청에 대해 CORS를 적용해 보는 것도 한 방법입니다. 만약 여전히 문제가 발생한다면, CORS 설정 위치를 코드에서 더욱 명확히 지정해 보세요. 예를 들어,
로깅 및 디버깅:
- 이 문제를 해결하기 위해서는 서버의 로그에서 CORS 관련 요청의 헤더들이 올바르게 보내지고 있는지 확인하는 것이 중요합니다.
console.log를 사용하여req.get('origin')값이 예상 대로인지 반드시 체크하세요.
- 이 문제를 해결하기 위해서는 서버의 로그에서 CORS 관련 요청의 헤더들이 올바르게 보내지고 있는지 확인하는 것이 중요합니다.
해결 사례를 참고해 보세요:
- Node.js에서 CORS 설정 관련 문제 해결하기를 참고하십시오. 이 링크에서도 다른 회원이 유사한 문제에 대해 논의한 부분이 있어 도움이 될 수 있습니다.
- Node.js에서 CORS 설정 관련 문제 해결하기를 참고하십시오. 이 링크에서도 다른 회원이 유사한 문제에 대해 논의한 부분이 있어 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





