인프런 커뮤니티 질문&답변
parseCookie 부분에 대해 질문 있습니다.
작성
·
602
0
ParseCookies=(cookie~ 로 시작하는 부분에 질문있습니다.
이게 쿠키 property를 받아서 나누고 쪼개는 역할을 하는 거 같은데요,
처음에
(cookie = '') =>이 부분은 기본 쿠키값이 비어있게 설정하는 건가요?쿠키를 ; 로 나누고, 그다음 = 으로 나눈 후에, 인자 "k" 부분 부터 이해가 안갑니다.
여기서 인자 k는 뭔가요 ㅇ,.ㅇ;
- 마지막에 reduce를 해 주는 곳에서 인자 갑자기 "acc" 가 나오는데, 이 친구는 뭐를 가르키는 건가요?
이하는 쿠키 부분의 코드 입니다.
const parseCookies = (cookie = '') => cookie
.split(';')
.map(v => v.split('='))
.reduce((acc, [k, v]) => {
acc[k.trim()] = decodeURIComponent(v);
return acc;
}, {});
이하는 코드 전문입니다. ```
const http = require('http');
const fs = require('fs');
const url = require('url');
const qs = require('querystring');
const parseCookies = (cookie = '') =>
cookie
.split(';')
.map(v => v.split('='))
.reduce((acc, [k, v]) => {
acc[k.trim()] = decodeURIComponent(v);
return acc;
}, {});
const session = {};
http.createServer((req, res) => {
const cookies = parseCookies(req.headers.cookie);
if (req.url.startsWith('/login')) {
const { query } = url.parse(req.url);
const { name } = qs.parse(query);
const expires = new Date();
expires.setMinutes(expires.getMinutes() + 5);
const randomInt = +new Date();
session[randomInt] = {
name,
expires,
};
res.writeHead(302, {
Location: '/',
'Set-Cookie': session=${randomInt}; Expires=${expires.toGMTString()}; HttpOnly; Path=/,
});
res.end();
} else if (cookies.session && session[cookies.session].expires > new Date()) {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(${session[cookies.session].name}님 안녕하세요);
} else {
fs.readFile('./server4.html', (err, data) => {
if (err) {
throw err;
}
res.end(data);
});
}
})
.listen(8084, () => {
console.log('8084번 포트에서 서버 대기중입니다!');
});





