작성
·
30
·
수정됨
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 문제 해결을 위한 기본 점검:
corsWhenDomainMatches
함수에서 req.get('origin')
을 사용하고 있는데, origin
값이 정확한지 로그로 확인해 보세요.Domain.findOne()
으로 찾는 도메인이 데이터베이스에 있는지 확인하세요. 도메인 데이터가 없다면 CORS 설정이 작동하지 않을 것입니다.코드 변경 제안:
cors()
사용 전 도메인을 정확히 확인하거나 credentials
옵션을 다시 검토하세요.로깅 및 디버깅:
console.log
를 사용하여 req.get('origin')
값이 예상 대로인지 반드시 체크하세요.해결 사례를 참고해 보세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.