-
카테고리
-
세부 분야
풀스택
-
해결 여부
미해결
질문
22.08.14 22:48 작성 조회수 170
0
9분7초에 나온대로
res.setHeader('Access-Control-Allow-Origin', 'localhost:4000');
res.setHeader('Access-Control-Allow-Credentials', 'true');
를 추가했는데도 cors 가 해결되지 않습니다.
버전문제인걸까요?
답변을 작성해보세요.
0
0
조현영
지식공유자2022.08.14
강의 중 cors 모듈 쓰기 전 잠깐 간략하게 언급한 부분이군요. 저 위치에 저렇게 코딩하면 안 되고, router.post 위에 다음 추가해야 합니다.
router.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:4000');
res.setHeader('Access-Control-Allow-Credentials', 'true');
res.setHeader('Vary', 'Origin');
res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,PUT,PATCH,POST,DELETE');
res.setHeader('Access-Control-Allow-Headers', 'content-type');
next();
})
0
혁진
질문자2022.08.14
const express = require('express');
const jwt = require('jsonwebtoken');
const cors = require('cors');
const url = require('url');
const { verifyToken, apiLimiter } = require('./middlewares');
const { Domain, User, Post, Hashtag } = require('../models');
const router = express.Router();
router.post('/token', apiLimiter, async (req, res) => {
const { clientSecret } = req.body;
try {
const domain = await Domain.findOne({
where: { clientSecret },
include: {
model: User,
attribute: ['nick', 'id'],
},
});
if (!domain) {
return res.status(401).json({
code: 401,
message: '등록되지 않은 도메인입니다. 먼저 도메인을 등록하세요',
});
}
const token = jwt.sign({
id: domain.User.id,
nick: domain.User.nick,
}, process.env.JWT_SECRET, {
expiresIn: '30m', // 30분
issuer: 'nodebird',
});
res.setHeader('Access-Control-Allow-Origin', 'localhost:4000');
res.setHeader('Access-Control-Allow-Credentials', 'true');
return res.json({
code: 200,
message: '토큰이 발급되었습니다',
token,
});
} catch (error) {
console.error(error);
return res.status(500).json({
code: 500,
message: '서버 에러',
});
}
});
router.get('/test', verifyToken, apiLimiter, (req, res) => {
res.json(req.decoded);
});
router.get('/posts/my', apiLimiter, verifyToken, (req, res) => {
Post.findAll({ where: { userId: req.decoded.id } })
.then((posts) => {
console.log(posts);
res.json({
code: 200,
payload: posts,
});
})
.catch((error) => {
console.error(error);
return res.status(500).json({
code: 500,
message: '서버 에러',
});
});
});
router.get('/posts/hashtag/:title', verifyToken, apiLimiter, async (req, res) => {
try {
const hashtag = await Hashtag.findOne({ where: { title: req.params.title } });
if (!hashtag) {
return res.status(404).json({
code: 404,
message: '검색 결과가 없습니다',
});
}
const posts = await hashtag.getPosts();
return res.json({
code: 200,
payload: posts,
});
} catch (error) {
console.error(error);
return res.status(500).json({
code: 500,
message: '서버 에러',
});
}
});
module.exports = router;
0
0
답변 6