인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

아이팥님의 프로필 이미지
아이팥

작성한 질문수

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

쿠키 동작 방식 문의

작성

·

125

0

// 코드 중간 name이라는 쿠키가 있는 경우 코드에 제가 임의로 콘솔로그를 찍어봤는데 동작방식이 이해가 안가서 질문드립니다!
 
http.createServer(async (req, res) => {
const cookies = parseCookies(req.headers.cookie); // { mycookie: 'test' }
// 주소가 /login으로 시작하는 경우
if (req.url.startsWith('/login')) {
const { query } = url.parse(req.url);
const { name } = qs.parse(query);
const expires = new Date();
// 쿠키 유효 시간을 현재시간 + 5분으로 설정
expires.setMinutes(expires.getMinutes() + 5);
res.writeHead(302, { // 302 : redirect
Location: '/',
'Set-Cookie': `name=${encodeURIComponent(name)}; Expires=${expires.toGMTString()}; HttpOnly; Path=/`,
});
res.end();
// name이라는 쿠키가 있는 경우
} else if (cookies.name) {
console.log("cookies :",cookies) // 질문! : 첫 로그인이나 새로고침하는 즉, 한번 실행하는 동작시 두번씩 콘솔로그가 찍히는 이유가 뭔가요?
res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end(`${cookies.name}님 안녕하세요`);
} else {
try {
const data = await fs.readFile('./cookie2.html');
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(data);
} catch (err) {
res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end(err.message);
}
}
})
.listen(8084, () => {
console.log('8084번 포트에서 서버 대기 중입니다!');
});
 
// 출력
8084번 포트에서 서버 대기 중입니다!
cookies : { name: '홍길동' }
cookies : { name: '홍길동' }
 

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

브라우저가 요청을 두 번 보낼 때가 있습니다. GET /favicon.ico와 GET /를요.

console.log(req.url, cookies) 해보세요.

아이팥님의 프로필 이미지
아이팥

작성한 질문수

질문하기