morgan모듈이 cors 문제가 발생할때만 OPTIONS 메서드가 로깅이 되는 이유가 궁금합니다.
174
작성한 질문수 2
cors 정책 적용
// 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 로깅

CORS 정책 미적용
// 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 메서드가 로깅이 되는지 궁금합니다.
답변 2
0
외부 브라우저에서 서버로 교차 출처 요청을 보낼 때, 브라우저는 CORS 정책에 따라 필요한 경우에만 OPTIONS 요청(Preflight 요청)을 보냅니다. CORS 정책이 적용되더라도 Preflight 요청이 필요한 조건을 충족하지 않으면 OPTIONS 요청은 보내지 않습니다.
또한, 모든 요청을 정확히 확인하려면 morgan 보다는 브라우저의 개발자 도구를 사용하는 것이 더 적합합니다. 개발자 도구에서는 OPTIONS 요청 여부와 CORS 정책의 영향을 명확히 확인할 수 있습니다.
0
브라우저는 preflighted 요청일 때 options 요청을 먼저 보냅니다. preflighted 요청은 simple request가 아닌 경우를 말합니다. 다음 글에서 케이스를 봐보세요.
https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests
또한 요청을 보냈는지는 morgan에서 보는 게 아니라 브라우저 네트워크 탭에서 보시는 게 정확합니다.
0
사전 요청은 교차출처 요청일때 브라우저에서 안전한지 판단하기 위해서 수행되는건데 이전 수업에서는 동일 출처에서 보내는 요청이었기 때문에 OPTIONS 요청을 보내지 않았던거군요... 모든 요청에 OPTIONS 요청이 있는 줄로 잘못 알고 있었습니다... 답변 감사합니다!
깃헙 질문
0
79
2
강의 1-1 수업노트의 로드맵 링크가 작동하지 않습니다.
0
74
1
aws - lightsail 이용 관련
0
56
1
4강 http 서버 만들때 ESM방식으로 해도 될까요?
0
78
2
모듈 사용 시 단점이 있나요?
0
78
1
node.js 버전 및 typescript 적용 문의
0
91
2
12.7. 방장기능(강퇴) 질문드립니다.
0
78
2
12.7 socket.js코드 그대로 뱃겨서 했는데, socket.request.session.color가안나오네요
0
67
1
12.7 코드 그대로 뱃겨서 햇는데 스샷같이 오류가뜹니다.
0
73
2
12.7.1스스로 해보기 질문되나요
0
89
3
시퀄라이즈 실습하기 질문드립니다.
0
186
9
<7-5. 시퀄라이즈 사용하기>수업 질문 드립니다.
0
94
2
크롬에서 user id를 인풋에 입력하고 등록하면 404 에러처리 페이지가 뜹니다.
0
109
2
구매 결제관련 질문입니다 !
0
120
1
다수의 supertest 가 실행될 때 force:true로 인한 DB 초기화 문제
0
130
2
node 설치 방법이 전혀다르게 바뀐것 같습니다.
0
146
2
12강 깃허브에 있는 12.7 chat.html 복붙했는데 css오류
0
119
2
무료/프리미엄 동시 소유 시 질문
0
113
1
비주얼 스튜디오 코드로 계속 진행해도 괜찮을까요?
0
133
2
10강 cors에러 localhost:4000으로 접속했을때 에러
1
155
2
webstorm 해결할 수 없는 변수 문제
0
152
2
혹시 몽고DB 쓸거면 MySQL 강의 스킵해도 되나요?
0
146
2
LightSail 실행 중 오류 질문드립니다!
0
198
2
RedisStore 사용법 질문
0
129
2





