해결된 질문
작성
·
21
0
// routes/v2.js
const express = require("express");
const { verifyToken, apiLimiter } = require("../middlewares");
const {
createToken,
getMyPosts,
getPostsByHashtag,
corsWhenDomainMatches,
getFollowersByUser,
getFollowingsByUser,
} = require("../controllers/v2");
const router = express.Router();
// router.use((req, res, next) => {
// res.setHeader("Access-Control-Allow-Origin", "http://localhost:4000");
// res.setHeader("Access-Control-Allow-Headers", "content-type");
// next();
// });
router.use(corsWhenDomainMatches); // CORS 정책 적용 미들웨어
// 토큰 발급 라우터
// /v2/token
router.post("/token", apiLimiter, createToken);
...
module.exports = router;
morgan 로깅
// routes/v2.js
const express = require("express");
const { verifyToken, apiLimiter } = require("../middlewares");
const {
createToken,
getMyPosts,
getPostsByHashtag,
corsWhenDomainMatches,
getFollowersByUser,
getFollowingsByUser,
} = require("../controllers/v2");
const router = express.Router();
// router.use((req, res, next) => {
// res.setHeader("Access-Control-Allow-Origin", "http://localhost:4000");
// res.setHeader("Access-Control-Allow-Headers", "content-type");
// next();
// });
// router.use(corsWhenDomainMatches); // CORS 미들웨어 비활성화
// 토큰 발급 라우터
// /v2/token
router.post("/token", apiLimiter, createToken);
...
module.exports = router;
morgan 로깅
찾아보니 OPTIONS 메서드는 CORS 문제 때문이 아닌 브라우저는 요청을 보내기전 OPTIONS 메서드로 먼저 예비요청을 보낸다는 것을 알았습니다. 그렇다면 OPTIONS 메서드는 모든 요청마다 예비 요청으로 이뤄지고 있을텐데 왜 CORS 문제일때만 OPTIONS 메서드가 로깅이 되는지 궁금합니다.
답변 1
0
브라우저는 preflighted 요청일 때 options 요청을 먼저 보냅니다. preflighted 요청은 simple request가 아닌 경우를 말합니다. 다음 글에서 케이스를 봐보세요.
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests
또한 요청을 보냈는지는 morgan에서 보는 게 아니라 브라우저 네트워크 탭에서 보시는 게 정확합니다.
사전 요청은 교차출처 요청일때 브라우저에서 안전한지 판단하기 위해서 수행되는건데 이전 수업에서는 동일 출처에서 보내는 요청이었기 때문에 OPTIONS 요청을 보내지 않았던거군요... 모든 요청에 OPTIONS 요청이 있는 줄로 잘못 알고 있었습니다... 답변 감사합니다!