inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[리뉴얼] Node.js 교과서 - 기본부터 프로젝트 실습까지

CORS 이해하기

질문

364

혁진

작성한 질문수 12

0

9분7초에 나온대로

  res.setHeader('Access-Control-Allow-Origin', 'localhost:4000');
  res.setHeader('Access-Control-Allow-Credentials', 'true');
 
를 추가했는데도 cors 가 해결되지 않습니다.
 
버전문제인걸까요?

mongodb nodejs mysql Sequelize

답변 6

0

혁진

늦은밤에도 빠른 답변 감사합니다.

편안한 밤 되세요 선생님.

0

혁진

수업중 9분07 에 나온곳과 동일하게 위치시켰습니다.

0

제로초(조현영)

강의 중 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

혁진

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

혁진

localhost:4000에서 GET '/' 요청을 보냈을 때 입니다.

0

제로초(조현영)

헤더가 없는 것을 보니 엉뚱한 데 코드가 위치한 것 같은데요?

0

혁진

0

제로초(조현영)

네트워크탭 헤더들을 봐야합니다. cors에는 버전 문제가 없습니다.

리눅스 노드 설치시 패키지

0

162

0

socket.js 에서 referer로부터 roomId를 가져올 때

0

907

3

스트리밍 방식으로 대용량 파일 업로드 & 다운로드 관련 질문

0

2281

2

a[title] 질문드립니다

0

376

1

리뉴얼 강의 및 공부 방법

0

583

1

jwt decode

0

1130

1

node.js 교과서 3판 질문드립니다

0

392

1

passport와 jwt

0

434

1

리뉴얼 강의

0

421

2

혹시 Node.js 교과서 3판 이북은 언제 나오나요?

0

355

1

몽고디비 사용자도 MYSQL부분을 들어야 하나요???

0

482

1

sql 쿼리 로그는 어떤 모듈이 작성하나요?

0

506

2

nunjucks res.render('error'); 작동을 안합니다.

0

512

1

질문있습니다.

0

348

1

multer 한글 파일 업로드시 파일명이 깨져요.

1

3536

1

수업자료는 어디있나요?

0

368

1

질문 있습니디

0

237

1

multer 사용시 file 외 name값은 못받나용?

0

418

1

코드 중복 부분 질문드립니다.

0

299

1

api 만드는 이유 질문드립니다.

0

288

1

Strategy의 done에 대해 질문드립니다.

0

367

1

안녕하세요 fs 권한 관련 질문드립니다

0

451

1

시퀄라이즈 연결질문...

0

500

2

res.setHeader vs res.cookie

0

1789

3